Python的物件繼承(inherit)和方法覆寫(override)的順序關係

Python允許多重繼承,而多重繼承下,方法覆寫的順序關係是根據path尋找的順序而定,而非最後繼承的物件覆蓋先前的物件。以下面的範例來說:
class A:
    def a(self):
        print 'a'

class B:
    def a(self):
        print 'b'
如果有一個class C依序繼承A, B,如下:
class C(A, B):
    pass

C().a()  # print 'a'
則印出來的結果會是'a'。 如果依序繼承B, A,
class C(B, A):
    pass

C().a()  # print 'b'
則會印出'b' 因此,利用多重繼承的機制時,必須注意繼承的順序,將會影響物件呼叫方法的優先順序。

留言

熱門文章