18.4.9 方法解析顺序
处理类层次体系的另一个函数是getmro(),它会返回类的一个tuple,其中类的顺序就是扫描这些类的顺序,即使用方法解析顺序(Method Resolution Order,MRO)解析从基类继承的一个属性时要按这个顺序扫描各个类。每个类在这个序列中只出现一次。
import inspect
import example
class C(object):
pass
class C_First(C,example.B):
pass
class B_First(example.B,C):
pass
print('B_First:')
for c in inspect.getmro(B_First):
print(' {}'.format(c.__name__))
print()
print('C_First:')
for c in inspect.getmro(C_First):
print(' {}'.format(c.__name__))
这个例子的输出展示了MRO搜索的“深度优先”特性。对于B_First,搜索顺序中A也在C之前,因为B派生自A。