说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
在Python中,__mro__
是一个特殊属性,它代表了类的方法解析顺序(Method Resolution Order)。MRO决定了在多重继承中方法的查找顺序。class.__mro__
此属性是由类组成的元组,在方法解析期间会基于它来查找基类。
要了解一个类的MRO,可以通过在类名后面使用.运算符来访问__mro__
属性。例如:
class A:
pass
class B(A):
pass
class C(A):
pass
class D(B, C):
pass
print(D.__mro__)
在这个例子中,类D继承自B和C,而B和C都是继承自A。所以D的MRO将会按照D -> B -> C -> A
的顺序进行方法的查找。通过打印D.__mro__
,你可以看到这个顺序。
MRO的计算采用了C3线性化算法,它保证了在多重继承中的方法解析顺序是一致的,避免了潜在的歧义和冲突。
class.mro()
此方法可被一个元类来重载,以为其实例定制方法解析顺序。 它会在类实例化时被调用,其结果存储于 __mro__
之中。
https://docs.python.org/zh-cn/3/library/stdtypes.html#class.__mro__
更新时间:2024-03-02 21:52:16 标签:python 特殊属性 类