1. 程式人生 > >python新式類與舊式類

python新式類與舊式類

優先 開始 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新式類與舊式類