【Python】Python类的mro方法有什么作用?

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()方法可以看到类的继承顺序,了解方法的查找顺序,非常有用。