python新式類和經(jīng)典類的區(qū)別

首先:

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

Python 3.x中默認(rèn)都是新式類,不必顯式的繼承object

其次

新式類對(duì)象可以直接通過(guò)class屬性獲取自身類型:type
繼承搜索的順序發(fā)生了改變,經(jīng)典類多繼承屬性搜索順序: 先深入繼承樹(shù)左側(cè),再返回,開(kāi)始找右側(cè);新式類多繼承屬性搜索順序: 先水平搜索,然后再向上移動(dòng)
-新式類增加了slots內(nèi)置屬性, 可以把實(shí)例屬性的種類鎖定到slots規(guī)定的范圍之中
新式類增加了getattribute方法

再然后
在多繼承中,新式類采用廣度優(yōu)先搜索,而舊式類是采用深度優(yōu)先搜索。

最后

class A():
    def __init__(self):
        pass
    def save(self):
        print "This is from A"
class B(A):
    def __init__(self):
        pass
class C(A):
    def __init__(self):
        pass
    def save(self):
        print  "This is from C"
class D(B,C):
    def __init__(self):
        pass
fun =  D()
fun.save()

經(jīng)典類的答案: This is from A
新式類的答案: This is from C

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容