1.新式類(lèi)與經(jīng)典類(lèi)
在Python 2及以前的版本中,由任意內(nèi)置類(lèi)型派生出的類(lèi)(只要一個(gè)內(nèi)置類(lèi)型位于類(lèi)樹(shù)的某個(gè)位置),都屬于“新式類(lèi)”,都會(huì)獲得所有“新式類(lèi)”的特性;反之,即不由任意內(nèi)置類(lèi)型派生出的類(lèi),則稱(chēng)之為“經(jīng)典類(lèi)”。
“新式類(lèi)”和“經(jīng)典類(lèi)”的區(qū)分在Python 3之后就已經(jīng)不存在,在Python 3.x之后的版本,因?yàn)樗械念?lèi)都派生自?xún)?nèi)置類(lèi)型object(即使沒(méi)有顯示的繼承object類(lèi)型),即所有的類(lèi)都是“新式類(lèi)”。
官方文檔 https://www.python.org/doc/newstyle/
2.繼承順序的區(qū)別
主要是在多重繼承時(shí)才會(huì)遇到這個(gè)問(wèn)題。
經(jīng)典類(lèi)的鉆石繼承是深度優(yōu)先,即從下往上搜索;新式類(lèi)的繼承順序是采用C3算法(非廣度優(yōu)先)。
對(duì)經(jīng)典類(lèi)進(jìn)行代碼驗(yàn)證(所有經(jīng)典類(lèi)的代碼必須在Python2下運(yùn)行,下同),ClassicClassB 繼承自 ClassicClassA,SubClassicClass繼承自ClassicClassB,ClassicClassC:
class ClassicClassA(): var = 'Classic Class A' class ClassicClassB(ClassicClassA): pass class ClassicClassC(): var = 'Classic Class C' class SubClassicClass(ClassicClassB, ClassicClassC): pass if __name__ == '__main__': print(SubClassicClass.var)
文章名稱(chēng):Python中新式類(lèi)與經(jīng)典類(lèi)的區(qū)別詳析-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)地址:http://newbst.com/article20/dgigjo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、動(dòng)態(tài)網(wǎng)站、品牌網(wǎng)站設(shè)計(jì)、定制網(wǎng)站、用戶體驗(yàn)、全網(wǎng)營(yíng)銷(xiāo)推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容