python__基礎 : 多繼承中方法的呼叫順序 __mro__方法

cccy發表於2018-12-02

在多繼承中,如果一個子類繼承了兩個平級的父類,而這兩個父類有兩個相同名字的方法,那麼一般先繼承誰,呼叫方法就呼叫先繼承的那個父類的方法.如:

class A:
    def test(self):
        print(`AAAAA`)

class B:
    def test(self):
        print(`BBBBB`)

class C(A,B):
    pass

c = C()
c.test()

>>>AAAAA

可以看出,先繼承了A,所以輸出的是AAAAA.那麼由此引出了一個問題,python直譯器是如何對方法進行查詢排序的,答案 __mro__ 方法 ,這個方法基於C3 演算法 C3 演算法基於 廣度優先遍歷.

相關文章