這篇文章主要介紹python新式類和舊式類的區(qū)別是什么,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
創(chuàng)新互聯(lián)主要從事成都做網(wǎng)站、成都網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)柴桑,十年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(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的一個(gè)實(shí)例,那么a.__class__返回 ‘ class __main__.ClassA‘ ,type(a)返回總是
引入新類后,還有其他的好處,比如更多的內(nèi)置屬性將會引入,描述符的引入,屬性可以來計(jì)算等等。
為了向前兼容,默認(rèn)情況下用戶定義的類為經(jīng)典類,新類需要繼承自所有類的基類 object 或者繼承自object的新類。
值得注意的地方是,雖然使用的是最新的python(2.7),但是一些特性不會在舊式類起作用。
所以,為了確保自己使用的是新式類,有兩種以下方法:
1. 元類,在類模塊代碼的最前面加入如下代碼 __metaclass__ = classname(自定義的某個(gè)新式類)。
2. 類都從內(nèi)建類object直接或者間接地繼承。
如果不需要兼容舊式類,舊版本的類,那么就保持都是新式類。
在Python3里面,不存在這些問題了,因?yàn)樗械念惗际莖bject類的子類(隱式)。
代碼示例:
class oldClass: #經(jīng)典類 def __init__( self ): pass class newClass(object): #新類 def __init__( self ): pass c1 = oldClass() c2 = newClass() c1.__class__ # 輸出->type(c1) # 輸出-> c2.__class__ # 輸出-> type(c2) # 輸出->
以上是python新式類和舊式類的區(qū)別是什么的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!