Python类的mro()方法可以获取一个类的方法解析顺序(Method Resolution Order)。
mro()会返回一个元组,描述了类继承的顺序。知道类的继承顺序可以帮助理解复杂的多重继承,并正确定位方法/属性的来源。
例如:
## python www.itzhimei.com 代码
class A:
pass
class B(A):
pass
class C(A):
pass
class D(B, C):
pass
print(D.__mro__)
# 输出 (<class 'D'>, <class 'B'>, <class 'C'>, <class 'A'>, <class 'object'>)
这里D先继承B,然后继承C,最后是A。
当我们调用D的方法时,Python会按照mro的顺序开始查找,先在D类中查找,然后B、C、A,最后在object基类中查找。
这样保证类的多重继承时方法查找顺序一致可预测,避免继承顺序不同产生混乱。mro()还可以帮助debug复杂的多重继承产生的异常情况。
所以mro()方法可以看到类的继承顺序,了解方法的查找顺序,非常有用。