一.结论
首先抛出结论,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。
类似的图

















