跟着…:
>>> class A(object): pass
...
>>> A.__mro__
(, )
>>> class B(A): pass
...
>>> B.__mro__
(, , )
>>> class C(A): pass
...
>>> C.__mro__
(, , )
>>>
只要我们有单继承,__mro__只是元组:类,它的基地,它的基地的基地,等等up to对象(当然只适用于新式类)。
现在,使用多重继承…:
>>> class D(B, C): pass
...
>>> D.__mro__
(, , , , )
…你还得到保证,在__mro__中,没有类重复,没有类在其祖先之后,保存首先在同一级别的多重继承(例如在这个例子中的B和C)进入的类是在__mro__从左到右。
在类的实例上获得的每个属性,不仅仅是方法,在概念上沿着__mro__查找,因此,如果祖先中有多个类定义了该名称,这将告诉你在第一个类中找到该属性的位置在定义该名称的__mro__中。