python新式類和經(jīng)典類的區(qū)別實例分析
本文實例講述了python新式類和經(jīng)典類的區(qū)別。分享給大家供大家參考,具體如下:
新式類就是 class person(object): 這種形式的, 從py2.2 開始出現(xiàn)的
新式類添加了:
__name__ is the attribute's name.
__doc__ is the attribute's docstring.
__get__(object) is a method that retrieves the attribute value from object.
__set__(object, value) sets the attribute on object to value.
__delete__(object, value) deletes the value attribute of object.
新式類的出現(xiàn), 除了添加了大量方法以外, 還改變了經(jīng)典類中一個多繼承的bug, 因為其采用了廣度優(yōu)先的算法
Python 2.x中默認(rèn)都是經(jīng)典類,只有顯式繼承了object才是新式類
python 3.x中默認(rèn)都是新式類,經(jīng)典類被移除,不必顯式的繼承object
粘貼一段官網(wǎng)上的作者解釋
是說經(jīng)典類中如果都有save方法, C中重寫了save() 方法, 那么尋找順序是 D->B->A, 永遠(yuǎn)找不到C.save()
代碼演示:
#!/usr/bin/env python3 #coding:utf-8 ''' 新式類和經(jīng)典類的區(qū)別, 多繼承代碼演示 ''' class A: def __init__(self): print 'this is A' def save(self): print 'save method from A' class B: def __init__(self): print 'this is B' class C: def __init__(self): print 'this is c' def save(self): print 'save method from C' class D(B, C): def __init__(self): print 'this is D' d = D() d.save()
結(jié)果顯示
this is D
save method from C
注意: 在python3 以后的版本中, 默認(rèn)使用了新式類, 是不會成功的
另外: 經(jīng)典類中所有的特性都是可讀可寫的, 新式類中的特性只讀的, 想要修改需要添加 @Texing.setter
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python面向?qū)ο蟪绦蛟O(shè)計入門與進(jìn)階教程》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python編碼操作技巧總結(jié)》及《Python入門與進(jìn)階經(jīng)典教程》
希望本文所述對大家Python程序設(shè)計有所幫助。
相關(guān)文章
python3 批量獲取對應(yīng)端口服務(wù)的實例
今天小編就為大家分享一篇python3 批量獲取對應(yīng)端口服務(wù)的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07jupyter notebook 使用過程中python莫名崩潰的原因及解決方式
這篇文章主要介紹了jupyter notebook 使用過程中python莫名崩潰的原因及解決方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04django如何根據(jù)現(xiàn)有數(shù)據(jù)庫表生成model詳解
這篇文章主要給大家介紹了關(guān)于django如何根據(jù)現(xiàn)有數(shù)據(jù)庫表生成model的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Django具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2022-08-08VSCode搭建Django開發(fā)環(huán)境的圖文步驟
本篇介紹在vscode環(huán)境下搭建Django開發(fā)環(huán)境的詳細(xì)步驟,包括Python、Django、VSCode等,以及它們的安裝和配置方法,具有一定的參考價值,感興趣的可以了解一下2023-09-09linux平臺使用Python制作BT種子并獲取BT種子信息的方法
這篇文章主要介紹了linux平臺使用Python制作BT種子并獲取BT種子信息的方法,結(jié)合實例形式詳細(xì)分析了Python BT模塊的安裝及針對BT種子文件的相關(guān)操作技巧,需要的朋友可以參考下2017-01-01Python 實現(xiàn)數(shù)據(jù)庫更新腳本的生成方法
下面小編就為大家?guī)硪黄狿ython 實現(xiàn)數(shù)據(jù)庫更新腳本的生成方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07Python數(shù)據(jù)類型最全知識總結(jié)
學(xué)習(xí)一門語言,往往都是從Hello World開始. 但是筆者認(rèn)為,在一個黑框框中輸出一個“你好,世界”并沒有什么了不起,要看透事物的本質(zhì),熟悉一門語言,就要了解其底層,就是我們常常說的基礎(chǔ),本篇從python中的數(shù)據(jù)類型開始,需要的朋友可以參考下2021-05-05