Python進階-----類的繼承順序


  python的類可以繼承多個類,如果繼承多個類,那么其尋找方法的方式有:深度優先和廣度優先

  基類或者父類繼承了object類,那么該類就是新式類,否則便是經典類

  當類是經典類時,多繼承情況下,會按照深度優先方法查找

  當類時新式類時,多繼承情況下,會按照廣度優先方法查找

 1 class A(object):  2     def test(self):  3         print('from A')  4 
 5 class B(A):  6     def test(self):  7         print('from B')  8 
 9 class C(A): 10     def test(self): 11         print('from C') 12 
13 class D(B): 14     def test(self): 15         print('from D') 16 
17 class E(C): 18     def test(self): 19         print('from E') 20 
21 class F(D,E): 22     # def test(self):
23     # print('from F')
24     pass
25 f1=F() 26 f1.test() 27 print(F.__mro__) #只有新式才有這個屬性可以查看線性列表,經典類沒有這個屬性
新式類繼承順序:F->D->B->E->C->A
經典類繼承順序:F->D->B->A->E->C
python3中統一都是新式類
pyhon2中才分新式類與經典類
所有的父類的MRO列表遵循如下原則:
子類會先於父類被檢查;多個父類會根據它們在列表中的順序被檢查;如果對下一個類存在兩個合法的選擇,則選擇第一個類。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM