python新式類與舊式類

2022-02-24 10:23:28 字數 910 閱讀 7909

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...