1. 程式人生 > 實用技巧 >ABC 模組

ABC 模組

abc:Abstract Base Classes

作用:在程式碼中定義和使用抽象基類進行API檢查。

在Python3.4中,宣告抽象基類最簡單的方式是子類話abc.ABC

Python3.0到Python3.3,必須在class語句中使用metaclass=ABCMeta

Python2中使用__metaclass__=ABCMeta

import abc   ( metaclass=abc.ABCMeta)
# 多型性是指具有不同功能的函式可以使用相同的函式名,這樣就可以用一個函式名呼叫不同內容的函式。
# 在面向物件方法中一般是這樣表述多型性:向不同的物件傳送同一條訊息,不同的物件在接收時會產生不同的行為(即方法)
# 。也就是說,每個物件可以用自己的方式去響應共同的訊息。所謂訊息,就是呼叫函式,不同的行為就是指不同的實現,即執行不同的函式。
# 上述程式碼子類是約定俗稱的實現這個方法,加上@abc.abstractmethod裝飾器後嚴格控制子類必須實現這個方法
import abc
class Animal(metaclass=abc.ABCMeta):  # 同一類事物:動物
    @abc.abstractmethod                   # 上述程式碼子類是約定俗稱的實現這個方法,加上@abc.abstractmethod裝飾器後嚴格控制子類必須實現這個方法
    def talk(self):
        raise AttributeError('子類必須實現這個方法')


class People(Animal):  # 動物的形態之一:人
    def talk(self):
        print('say hello')


class Dog(Animal):  # 動物的形態之二:狗
    def talk(self):
        print('say wangwang')


class Pig(Animal):  # 動物的形態之三:豬
    def talk(self):
        print('say aoao')


peo2 = People()
pig2 = Pig()
d2 = Dog()

peo2.talk()
pig2.talk()
d2.talk()