多继承的有两个方式,一个是广度优先,一个是深度优先
Python2中经典类按深度优先,新式类按广度优先
Python3中经典类和新式类都按广度优先
# -*- coding:utf-8 -*- __author__ = "MuT6 Sch01aR" class A(): 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 D()
D继承了B,C
B,C分别继承了A
第一级为A,第二级为B和C(左边的优先),第三级为D
首先在Python3环境下运行,看看结果
首先继承了B,把B中内容改为pass,运行
D继承了C,再把C中内容改为pass,运行
D最后继承了A
可见广度优先的顺序为:B->C->A,即先同一级,再上一级
再在Python2环境中运行,看看是什么情况
首先是B,把B中内容改为pass,运行
D继承了A,把A中内容改为pass,运行
D最后继承了C
深度优先的继承顺序为:B->A->C,即先上一级,再同一级