多继承

今天回顾到多继承,在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])

 

posted @ 2019-01-26 20:12  善良的大蝌蚪  阅读(124)  评论(0编辑  收藏  举报