一个类可以从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'>]