类变量如何在多继承Python类中起作用?

一个类可以从Python中的多个基类派生。这称为多重继承。

在多重继承中,所有基类的功能都继承到派生类中。多重继承的语法类似于单一继承。

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

在多继承方案中,将在当前类中首先搜索任何指定的属性。如果未找到,则搜索将以深度优先,从左到右的方式继续进入父类,而无需两次搜索相同的类。

因此,在上面的MultiDerived类示例中,搜索顺序为[MultiDerived,Super1,Super2,对象]。此顺序也称为MultiDerived类的线性化,用于查找此顺序的规则集称为“方法解析顺序(MRO)”。

MRO确保一个类始终出现在其父类的前面,如果有多个父类,其顺序与基类的元组相同。

类的MRO可以视为__mro__属性或mro()方法。前者返回一个元组,而后者返回一个列表。

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