类变量如何在 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 次浏览

开启你的 职业生涯

完成课程即可获得认证

开始学习
广告