类的继承查询策略:广度优先
#类的继承方式:breadth first广度优先的查询策略,继承按照B——C——A的顺序
注意:python2中经典类是按照深度优先来继承的;新式类是按照广度优先继承的
pyhton3则完全按照广度优先来继承的
ex1:
1 class A(object): 2 def __init__(self): 3 print("A") 4 class B(A): 5 def __init__(self): 6 print("B") 7 class C(A): 8 def __init__(self): 9 print("C") 10 class D(B,C): 11 pass 12 obj=D()
执行结果是打印B
ex2:
1 class A(object): 2 def __init__(self): 3 print("A") 4 class B(A): 5 pass 6 # def __init__(self): 7 # print("B") 8 class C(A): 9 def __init__(self): 10 print("C") 11 class D(B,C): 12 pass 13 obj=D()
执行结果是打印C
ex3:
1 class A(object): 2 def __init__(self): 3 print("A") 4 class B(A): 5 pass 6 # def __init__(self): 7 # print("B") 8 class C(A): 9 pass 10 # def __init__(self): 11 # print("C") 12 class D(B,C): 13 pass 14 obj=D()
执行结果是打印A
同理:多继承的方法和这个原理相同,多继承中参数的次序是对子类的继承有影响的