這篇文章主要介紹python新式類和舊式類的區(qū)別是什么,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!
創(chuàng)新互聯(lián)主要從事成都做網(wǎng)站、成都網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)柴桑,十年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108
python的新式類是2.2版本引進(jìn)來的,我們可以將之前的類叫做經(jīng)典類或者舊式類。
為什么要在2.2中引進(jìn)new style class呢?官方給的解釋是:
為了統(tǒng)一類(class)和類型(type)。
在2.2之前,比如2.1版本中,類和類型是不同的,如a是ClassA的一個實例,那么a.__class__返回 ‘ class __main__.ClassA‘ ,type(a)返回總是<type 'instance'>。而引入新類后,比如ClassB是個新類,b是ClassB的實例,b.__class__和type(b)都是返回‘class '__main__.ClassB' ,這樣就統(tǒng)一了。
引入新類后,還有其他的好處,比如更多的內(nèi)置屬性將會引入,描述符的引入,屬性可以來計算等等。
為了向前兼容,默認(rèn)情況下用戶定義的類為經(jīng)典類,新類需要繼承自所有類的基類 object 或者繼承自object的新類。
值得注意的地方是,雖然使用的是最新的python(2.7),但是一些特性不會在舊式類起作用。
所以,為了確保自己使用的是新式類,有兩種以下方法:
1. 元類,在類模塊代碼的最前面加入如下代碼 __metaclass__ = classname(自定義的某個新式類)。
2. 類都從內(nèi)建類object直接或者間接地繼承。
如果不需要兼容舊式類,舊版本的類,那么就保持都是新式類。
在Python3里面,不存在這些問題了,因為所有的類都是object類的子類(隱式)。
代碼示例:
class oldClass: #經(jīng)典類 def __init__( self ): pass class newClass(object): #新類 def __init__( self ): pass c1 = oldClass() c2 = newClass() c1.__class__ # 輸出-> <class __main__.oldClass at 0x0137BF10> type(c1) # 輸出-> <type 'instance'> c2.__class__ # 輸出-><class '__main__.newClass'> type(c2) # 輸出-><class '__main__.newClass'>
以上是python新式類和舊式類的區(qū)別是什么的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
本文名稱:python新式類和舊式類的區(qū)別是什么
轉(zhuǎn)載注明:http://jinyejixie.com/article48/ipjhep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、關(guān)鍵詞優(yōu)化、虛擬主機(jī)、全網(wǎng)營銷推廣、品牌網(wǎng)站制作、自適應(yīng)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)