Python支持多重繼承,一個子類能夠有多個「直接父類」。這樣,就具有了「多個父類」的特色。可是因爲,這樣會被「類的總體層次」搞的異常複雜,儘可能避免使用。spa
Python支持多繼承,若是父類中有相同名字的方法,在子類沒有指定父類名時,解釋器將 「從左向右」按順序搜索。code
MRO(MethodResolution Order):方法解析順序。 咱們能夠經過mro()方法得到 「類的層次結構」,方法解析順序也是按照這個「類的層次結構」尋找的。對象
【操做】多重繼承-mro()blog
#多重繼承-mro() class A: def aa(self): print('aa') def say(self): print('say AAA') class B: def bb(self): print('bb') def say(self): print('say BBB') class C(B,A): def cc(self): print('cc') cc = C() print(C.mro()) #打印類的層次結構 cc.say() #解釋器尋找方法是‘從左到右’的方式尋找,此時會執行B中的say()
在子類中,若是想要得到父類的方法時,咱們能夠經過 super()來作。繼承
super()表明父類的定義,不是父類對象。io
【操做】class
#super() class A: def say(self): print('A:',self) print('say AAA') class B(A): def say(self): #A.say(self) #調用父類的say()方法 super().say() #經過super()調用父類方法 print('say BBB') b = B() b.say()
運行結果:object
A: <__main__.B object at 0x0000020326058AC8>
say AAA
say BBB搜索