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新式類與舊式類
主要是深度與廣度mro 繼承的區別 在python 3.x中取消了經典類,預設都是新式類,並且不必顯式的繼承object,也就是說 class person object pass class person pass class person pass 三種寫法並無區別,推薦第一種 但是在pytho...
python 新式類和舊式類
python的新式類是2.2版本引進來的,我們可以將之前的類叫做經典類或者舊類。為什麼要在2.2中引進new style class呢?官方給的解釋是 為了統一類 class 和型別 type 在2.2之前,比如2.1版本中,類和型別是不同的,如a是classa的乙個例項,那麼a.class 返回 ...
python 新式類和舊式類
新式類和舊式類 python的新式類是2.2版本引進來的,我們可以將之前的類叫做經典類或者舊類。為什麼要在2.2中引進new style class呢?官方給的解釋是 為了統一類 class 和型別 type 在2.2之前,比如2.1版本中,類和型別是不同的,如a是classa的乙個例項,那麼a.c...