MRO(Method Resolution Order):方法解析顺序。
1. 如果是经典类MRO为DFS(深度优先搜索(子节点顺序:从左到右))。
2. 如果是新式类MRO为BFS(广度优先搜索(子节点顺序:从左到右))。
不少语言支持多继承,比如python多继承,似乎很简单,但仔细想想,真的是这样吗?创建一个类时,如果继承的层级比较深,继承图中的每个节点都可能有一个或多个直接父类,那么这个新创建的类该从按照什么顺序继承父类和祖先类的属性和方法?这个问题远没有想象的简单,要逐层分析
O=object
class f(O):pass
class e(O):pass
class d(O):pass
class c(d,f):pass
class b(e,d):pass
class a(b,c):pass
print(a.mro())
#l[f]=fo l[e]=eo l[d]=do
#l[c]=c+mer(do,fo,df)
#l[c]=cdfo
#l[b]=b+mer(eo,do,ed)
#l[b]=bedo
#l[a]=a+mer(do,dfo,)
#l[a]=abecdfo