Python多继承的执行顺序

2017-04-21  本文已影响0人  南少cc

经典类和新式类的写法:

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

广度优先

广度优先.jpeg

深度优先

深度优先.jpeg

在Python 3.x中:

<pre>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')</pre>

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

在Python 2.x中:

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

上一篇 下一篇

猜你喜欢

热点阅读