Python第十七天 抽象類
阿新 • • 發佈:2018-08-28
算法 methods super object 順序 執行 廣度優先 abc str
1 from abc import ABCMeta, abstractmethod 2 3 class A(metaclass=ABCMeta): 稱 A 為抽象類 4 @abstractmethod 5 def test(self):pass test 為抽象方法, 必須由繼承的子類實現具體功能 6 7 8 class B(A): 9 pass 10 11 B() 只要創建類 B 的 對象, 就會報錯
TypeError: Can‘t instantiate abstract class B with abstract methods test
python3,以後,新式類, 多繼承,方法的查找順序, 廣度優先算法
1 class A: 2 def test(self): 3 print(‘in A‘) 4 5 class B(A): 6 def test(self): 7 print(‘in B‘) 8 super().test() 9 10 class C(A): 11 def test(self): 12 print(‘in C‘) 13 super().test() 14 15 class D(B):16 def test(self): 17 print(‘in D‘) 18 super().test() 19 20 class E(C): 21 def test(self): 22 print(‘in E‘) 23 super().test() 24 25 class F(D, E): 26 def test(self): 27 print(‘in F‘) 28 super().test() 29 30 31 F().test() 32 33 print(F.mro())
執行結果
in F in D in B in E in C in A [<class ‘__main__.F‘>, <class ‘__main__.D‘>, <class ‘__main__.B‘>, <class ‘__main__.E‘>, <class ‘__main__.C‘>, <class ‘__main__.A‘>, <class ‘object‘>]
Python第十七天 抽象類