今天回顾到多继承,在python2x版本中存在两种类.:
⼀个叫经典类. 在python2.2之前. ⼀直使⽤的是经典类. 用深度优先
⼀个叫新式类. 在python2.2之后出现了新式类. 新式类的特点是基类的根是object类。用C3
python3x版本中只有一种类:
python3中使⽤的都是新式类. 如果基类谁都不继承. 那这个类会默认继承 object,用C3
merge操作是C3算法的核心。
mro(C(A,B)) = [C] + merge(mro(A),mro(B),[A,B]) mro(B(A)) = [B,A] mro(B(A1,A2,A3)) = [B] + merge(mro(A1),mro(A2),mro(A3),[A1,A2,A3]) [A,B,C] 表头:A 表尾: B,C [A] 表头: A ,表尾: 空. [A] + [B] = [A,B] # 如果计算merge里面的顺序: merge([A,O], [C,E,F,O],[C]) # [A] + merge([O], [C,E,F,O],[C]) # [A,C] + merge([O], [E,F,O])