Python多继承的执行顺序

经典类和新式类的写法:

<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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容