。這反映了所有的舊式類的實(shí)例是通過一個(gè)單一的叫做instance的內(nèi)建類型來實(shí)現(xiàn)的,這是它和類不同的地方。" /> 亚洲av色香蕉一区二区三区蜜桃 ,大地影院综艺资源,亚洲欧美一区二区国产综合
首頁(yè)技術(shù)文章正文

Python新式類與經(jīng)典類的區(qū)別

更新時(shí)間:2018-11-26 來源:黑馬程序員 瀏覽量:

1. 截止到python2.1,只存在舊式類。舊式類中,類名和type是無關(guān)的:如果x是一個(gè)舊式類,那么x.__class__定義了x的類名,但是type(x)總是返回<type 'instance'>。這反映了所有的舊式類的實(shí)例是通過一個(gè)單一的叫做instance的內(nèi)建類型來實(shí)現(xiàn)的,這是它和類不同的地方。

2. 新式類是在python2.2為了統(tǒng)一類和實(shí)例引入的。一個(gè)新式類只能由用戶自定義。如果x是一個(gè)新式類的實(shí)例,那么type(x)和x.__class__是一樣的結(jié)果(盡管這不能得到保證, 因?yàn)樾率筋惖膶?shí)例的__class__方法是允許被用戶覆蓋的)。

3. Python 2.x中默認(rèn)都是經(jīng)典類,只有顯式繼承了object才是新式類

4. Python 3.x中默認(rèn)都是新式類,經(jīng)典類被移除,不必顯式的繼承

5. 新式類的MRO算法采用C3算法廣度優(yōu)先搜索,而舊式類的MRO算法是采用深度優(yōu)先搜索

6. 新式類相同父類只執(zhí)行一次__init__函數(shù),經(jīng)典類重復(fù)執(zhí)行多次。

Python2.X中:

1543223303710_1.jpg

執(zhí)行順序?yàn)椋篋>C>A>B
Python3.X中:
1543223317064_2.jpg

執(zhí)行順序?yàn)椋篋>C>B>A>object



作者:傳智播人工智能+Python培訓(xùn)學(xué)院

首發(fā):http://python.itheima.com

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!