python多继承中的深度优先与广度优先

深度优先与广度优先(使用一个函数时,查找的优先级与顺序)

1.类为经典类时,多继承情况下,会按照深度优先查找

2.类为新式类时,多继承情况下,会按照广度优先查找

什么时新式类?什么是经典类?

当一个类继承objec时,它就是新式类,python3中取消了经典类,默认继承object,python3中的类为新式类

 1 class D:
 2     def test():
 3         print("D")
 4  
 5 class C(D):
 6     def test():
 7         print("C")
 8  
 9 class B(D):
10     def test():
11         print("B")
12  
13 class A(B,C):
14     def test():
15         print("A")
16  
17 a=A()
18 a.test()
View Code

深度优先:当调用A类test函数时,如下图所示,先查找A类中有无test函数,再查找B类,再查找D类,最后查找C类。

广度优先:当调用A类test函数时,如下图所示,先查找A类有无test函数,再查找B类,再查找C类,最后查找D类。

 

如下情况:

 广度优先的顺序为:A => B => C => D => E

posted @ 2020-07-31 19:22  ttoia  阅读(850)  评论(0)    收藏  举报