python3筆記---抽象類例子

Awing^發表於2020-11-05

抽象類概念

1、抽象類是特殊的類,只能繼承,不能例項化
2、抽象類就是從一堆類中抽取相同的內容而來的,內容包括資料屬性和函式屬性
3、假設如果類是從現實物件抽象而來的,那麼抽象類就是基於類抽象而來的。
4、打個比如:就比如動物類,人類,狗類,貓類,這裡的動物類就是一個抽象類。

Python中的介面, 抽象類, 抽象函式

Python中的介面是個弱概念, 從Java中的概念延伸而來,;
Python中通過抽象類和抽象方法來實現一個介面, 例如Python3中, class 類繼承的 abc.ABC 即為抽象類, @abstractmethod 裝飾器使其裝飾的函式成為抽象函式,@abc.abstarctproperty裝飾器定義抽象屬性

一般情況下, Python多在單繼承的情況下使用抽象類,這樣的好處就是規範了子類,降低了複雜度。

抽象類的實現

from abc import abstractmethod, ABCMeta

class Foo(metaclass=ABCMeta):
	@abc.abstractmethod
    def fun(self):
    	pass

子類的實現

類的例項化物件呼叫對應的子類的方法,子類的方法必須覆蓋了抽象類的方法

詳細參考理解

# -*- coding:utf-8 -*-
import abc
class Animal(metaclass=abc.ABCMeta):
    @abc.abstractmethod
    def run(self):
       pass
    @abc.abstractmethod
    def eat(self):
        pass

class People(Animal):
    def run(self):
        print('people is walking')
    def eat(self):
        print('people is eating')

class Dog(Animal):
    def run(self):
        print('dog is walking')
    def eat(self):
        print('dog is eating')

class Pig(Animal):
    def run(self):
        print('pig is walking')
    def eat(self):
        print('pig is eating')

people1 = People()
dog1 = Dog()
pig1 = Pig()


people1.run()
dog1.run()
pig1.run()

相關文章