【Python3_进阶系列_014】Python2,3多继承的区别-MRO
一.结论
首先抛出结论,Python类的多继承时的继承顺序:
python2采用的是深度优先的继承方式,python3采用的是广度优先的方式
二.验证例子
class A(): def f1(self): print("A") class B(A): def f2(self): pass class C(A): def f1(self): print("C") class D(B,C): pass d = D() d.f1()
输出:
Python2:A
Python3:C
原因:
Python2的深度优先,D首先查找父类B,B没有f1,深度查找B的父类A,A有f1(),所以输出A。
Python3的广度优先,所以实际多继承的时候,D首先查找父类B,B因为没有f1方法,所以直接查找C的f1()方法并且找到,所以输出C。
类似的图

详情可以参考这篇文章:
https://blog.csdn.net/qwertyupoiuytr/article/details/56439134

浙公网安备 33010602011771号