python新式類與舊式類
阿新 • • 發佈:2019-04-03
優先 開始 obj 三種 python3 經典 深度優先 順序 就是
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
新式類多繼承搜索順序(廣度優先):
先在水平方向查找,然後再向上查找,如圖所示:
python新式類與舊式類