Python进阶-----类的继承顺序
生活随笔
收集整理的這篇文章主要介紹了
Python进阶-----类的继承顺序
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
python的類可以繼承多個類,如果繼承多個類,那么其尋找方法的方式有:深度優(yōu)先和廣度優(yōu)先
基類或者父類繼承了object類,那么該類就是新式類,否則便是經(jīng)典類
當(dāng)類是經(jīng)典類時,多繼承情況下,會按照深度優(yōu)先方法查找
當(dāng)類時新式類時,多繼承情況下,會按照廣度優(yōu)先方法查找
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__) #只有新式才有這個屬性可以查看線性列表,經(jīng)典類沒有這個屬性 新式類繼承順序:F->D->B->E->C->A
經(jīng)典類繼承順序:F->D->B->A->E->C
python3中統(tǒng)一都是新式類
pyhon2中才分新式類與經(jīng)典類
所有的父類的MRO列表遵循如下原則:
子類會先于父類被檢查;多個父類會根據(jù)它們在列表中的順序被檢查;如果對下一個類存在兩個合法的選擇,則選擇第一個類。
基類或者父類繼承了object類,那么該類就是新式類,否則便是經(jīng)典類
當(dāng)類是經(jīng)典類時,多繼承情況下,會按照深度優(yōu)先方法查找
當(dāng)類時新式類時,多繼承情況下,會按照廣度優(yōu)先方法查找
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__) #只有新式才有這個屬性可以查看線性列表,經(jīng)典類沒有這個屬性 新式類繼承順序:F->D->B->E->C->A
經(jīng)典類繼承順序:F->D->B->A->E->C
python3中統(tǒng)一都是新式類
pyhon2中才分新式類與經(jīng)典類
所有的父類的MRO列表遵循如下原則:
子類會先于父類被檢查;多個父類會根據(jù)它們在列表中的順序被檢查;如果對下一個類存在兩個合法的選擇,則選擇第一個類。
轉(zhuǎn)載于:https://www.cnblogs.com/Meanwey/p/9788740.html
總結(jié)
以上是生活随笔為你收集整理的Python进阶-----类的继承顺序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 动手动脑2
- 下一篇: JAVA Spring Cloud 注册