python2.X是经典类【旧式类】:
是以深度优先【】
但是在Python2.x中,默认都是经典类,只有显式继承了object才是新式类,即:class Person(object):pass
新式类写法class Person():pass
经典类写法class Person:pass
经典类写法
他们最明显的区别在于继承搜索的顺序发生了改变,即
经典类多继承搜索顺序(深度优先):
先深入继承树左侧查找,然后再返回,开始查找右侧,如图所示:
1 A
2-1 B 2-2 C
3 D
A()
B(A) C(A)
D(B,C)
pyton2深度优先:3-->2-1-->1-->2-2-->1
python3.x新式类:
是以广度优先【】
在Python 3.x中取消了经典类,默认都是新式类,并且不必显式的继承object,也就是说:class Person(object):pass
class Person():pass
class Person:pass
三种写法并无区别,推荐第一种
1 A
2-1 B 2-2 C
3 D
A()
B(A) C(A)
D(B,C)
pyton3 广度优先 3-->2-1-->2-2-->1
新式类多继承搜索顺序(广度优先):
先在水平方向查找,然后再向上查找,如图所示:
原文:https://www.cnblogs.com/1314520xh/p/10624056.html