標籤:eth style html 代碼 www. AC tac print abstract
ABC 是一些不能被執行個體化的類。Python 3 添加了一個新的架構 —abc— 它提供了對 ABC 的支援。這個 abc 模組具有一個元類(ABCMeta
)和 修飾符(@abstractmethod
和 @abstractproperty
)。如果一個 ABC 具有一個 @abstractmethod
或 @abstractproperty
,它就不能被執行個體化,但必須在一個子類內被覆蓋。比如,如下代碼:
#-*- coding:utf-8 -*-from abc import ABCMeta,abstractmethod#抽象類別class A(object): __metaclass__ = ABCMeta @abstractmethod def fun(self):pass @abstractmethod def _f(self):pass # @abstractmethod 私人方法不能是抽象方法 def __f(self): pass#實作類別class B(A): def fun(self,name): print ‘B for %s‘%name def _f(self,name): print ‘B for %s‘%name def __f(self,name): return ‘B for %s‘%name def do(self,name): print self.__f(name)#a=A() 抽象類別無法執行個體化b=B()b.fun(‘ybf‘)b.fun(‘yyj‘)#b.__f() 無法調用b.do(‘ybf&yyj‘)
輸出:
B for ybf
B for yyj
B for ybf&yyj
如果子類不實現父類的方法,則會報錯。如果不清楚_、__、__xx__的差別,看這裡:python _、__、__xx__之間的差別。
python 抽象類別、抽象方法的實現