多继承的有两个方式,一个是广度优先,一个是深度优先
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,即先上一级,再同一级