类的继承查询策略:广度优先

Posted Alan_chow

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类的继承查询策略:广度优先相关的知识,希望对你有一定的参考价值。


#类的继承方式: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()
View Code

执行结果是打印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()
View Code

执行结果是打印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()
View Code

执行结果是打印A

同理:多继承的方法和这个原理相同,多继承中参数的次序是对子类的继承有影响的





以上是关于类的继承查询策略:广度优先的主要内容,如果未能解决你的问题,请参考以下文章

经典类与新式类的继承顺序

初始继承之顺序/深度优先及广度优先

深度优先&广度优先(多继承)

Python学习-类的继承

python中类的多继承的搜索算法

python基础之继承实现原理子类调用父类的方法封装