Python多继承的执行顺序

经典类和新式类的写法:


class A: #经典类(旧式类)写法
..................
class A(object): #新式类写法
..................

广度优先

Python多继承的执行顺序_第1张图片
广度优先.jpeg

深度优先

Python多继承的执行顺序_第2张图片
深度优先.jpeg

在Python 3.x中:

class A(object):
def init(self):
print('--------A')
class B(A):
def init(self):
print('-------B')
class C(A):
def init(self):
print('--------C')
class D(B,C):
pass
# def init(self):
# print('------D')

经典类和新式类按统一的广度优先的顺序执行,所以D的继承会以广度优先的顺序来执行查找可用的init构造函数,即:D-B-C-A

在Python 2.x中:

经典类写法按深度优先的顺序执行,即D的继承会以深度优先的顺序来执行查找可用的init构造函数,即:D-B-A-C
新式类写法按广度优先的顺序执行,即D的继承会以深度优先的顺序来执行查找可用的init构造函数,即:D-B-C-A

你可能感兴趣的:(Python多继承的执行顺序)