摘抄来至 《Python学习笔记》
MRO步骤如下:
1. 按"深度优先,从左到右"顺序获取列表
2.移除表中的重复类型,仅保留最后一个。
3.确保子类总在基类前,并确保多继承定义顺序。
上一个继承的父类,有相同的继承的情况。
class Boss: def run(self): ... def __init_subclass__(cls, **kwargs): print(cls,'cls') class A(Boss): ... class B(): ... class D1(A,B): ... class D2(Boss): # 在双方父类继承的情况下,会在BOSS类前进行查寻 ... class E(D1, D2): ... print(E.__mro__) class E1(D2, D1): ... print(E1.__mro__)
输出
(<class '__main__.E'>, <class '__main__.D1'>, <class '__main__.A'>, <class '__main__.D2'>, <class '__main__.Boss'>, <class '__main__.B'>, <class 'object'>)
(<class '__main__.E1'>, <class '__main__.D2'>, <class '__main__.D1'>, <class '__main__.A'>, <class '__main__.Boss'>, <class '__main__.B'>, <class 'object'>)