面向物件-繼承實現的原理
阿新 • • 發佈:2018-12-31
繼承的實現原理:
1、子類會先於父類
2、多個父類,會根據列表中的順序被檢查
3、如果對於下一個類存在兩個合法的選擇,選擇第一個父類。
繼承順序(mro查詢順序)
1、新式類:廣度優先
2、經典類:深度優先(一條道走到底)
在Python2中 經典類:沒有繼承object,以及它的子類都稱之為經典類
在Python2中 新式類:繼承object,以及它的子類都稱之為新式類
在Python3中 新式類:都是新式類(廣度)
#在Python2中 經典類:沒有繼承object,以及它的子類都稱之為經典類 class Foo: pass class Bar(Foo): pass #在Python2中 新式類:繼承object,以及它的子類都稱之為新式類 class Foo: pass class Bar(Foo): pass #在Python3中 新式類:都是新式類(廣度) class Foo: pass print(Foo.__bases__) class A(object): def test(self): print("from A") class B(A): # def test(self): # print('from B') pass class C(A): # def test(self):# print('from C') pass class D(B): # def test(self): # print('from D') pass class E(C): # def test(self): # print('from C') pass class F(D,E): # def test(self): # print('from F') pass print(F.mro()) # 新式類的查詢順序 f=F() f.test()