經(jīng)典類與新式類

以前版本 ~ python 2.1,我們只能使用經(jīng)典類。
python 2.2 ~ 最新版本, 我們可以使用新式類了。
新式類被賦予了很多新的特性(如:統(tǒng)一了types和classes),并改變了以往經(jīng)典類的一些內(nèi)容(如:改變了多繼承下方法的執(zhí)行順序)

建議從現(xiàn)在開始,使用python的新式類

1. 經(jīng)典類

沒有繼承的類,
注意:如果經(jīng)典類被作為父類,子類調(diào)用父類的構(gòu)造函數(shù)時(shí)會(huì)出錯(cuò)。【TypeError: must be type, not classobj】

#基類(經(jīng)典類)
class Person:
    def __init__(self):
        print "Hi, I am a person. "

#子類
class Student(Person):
    def __init__(self):
        super(self.__class__, self).__init__()

if __name__ == "__main__":
    student = Student()
    #出錯(cuò)啦!TypeError: must be type, not classobj

2. 新式類

每個(gè)類都繼承于一個(gè)基類,可以是自定義類或者其它類,如果什么都不想繼承,那就繼承于object
如果想用super調(diào)用父類的構(gòu)造函數(shù),請(qǐng)使用新式類!

#基類(新式類)
class Person(object):
    def __init__(self):
        print "Hi, I am a person."

#子類
class Student(Person):
    def __init__(self):
        super(self.__class__, self).__init__()

if __name__ == "__main__":
    student = Student()

[幫助]
python New-Style class

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容