類變數如何在 Python 多重繼承類中起作用?


Python 中的類可以從多個基類派生。這被稱為多重繼承。

在多重繼承中,所有基類的特徵會繼承到派生類中。多重繼承的語法與單一繼承類似。

class Super1:
    pass
class Super2:
    pass
class MultiDerived(Super1, Super2):
   pass

在多重繼承場景中,任何指定的屬性都會首先當前類中進行搜尋。如果未找到,將繼續在父類中以深度優先、從左到右的方式進行搜尋,但不會重複搜尋同一類。

因此,在 MultiDerived 類以上示例中,搜尋順序為 [MultiDerived, Super1, Super2, object]。此順序也稱為 MultiDerived 類的線性化,用於查詢此順序的規則集稱為方法解析順序 (MRO)。

MRO 確保類總是在其父類之前出現,如果存在多個父類,則順序與基類的元組相同。

類的 MRO 可以視為 __mro__ 屬性或 mro() 方法。前者返回元組,後者返回列表。

>>> MultiDerived.mro()
[<class '__main__.MultiDerived'>,
 <class '__main__.Super1'>,
 <class '__main__.Super2'>,
 <class 'object'>]

更新於:16-Jun-2020

368 次瀏覽

開啟你的 職業生涯

完成課程即可獲得認證

開始學習
廣告
© . All rights reserved.