一.结论

首先抛出结论,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。

类似的图

 

python 多继承 init python多继承的顺序_python3