python2 和 python3 中調(diào)用父類方法

首先把自己碰到的錯誤貼出來:

TypeError: super() takes at least 1 argument (0 given)

首先看 python2 中的寫法

class Animal(object):

    def __init__(self):
        print 'Animal init'

class Tom(Animal):

    def __init__(self):

        '''第一種寫法:'''
        super(Tom, self).__init__()

        '''第二種寫法'''
        Animal(self),__init__()

        print('Tom init')

從上面代碼看,可知共兩種寫法

                '''第一種寫法:'''
        super(Tom, self).__init__()

        '''第二種寫法'''
        Animal(self),__init__()

先看第二種寫法,就是 Animal 類通過 self 初始化了一個對象(實例、instance),然后讓該對象調(diào)用器 init 方法。
第二種寫法不難理解

然后第一種寫法其實就是寫法不同,但是可以這么理解
super(Tom, self) 就是查找 Tom.super -> Animal
然后使用 Animal(self) 調(diào)用 init 方法

python3

python3 中寫法更為簡單,第二種寫法,在python2 和 python3 中都可以使用
然后 python3 中可以直接 super().method 調(diào)用方法

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

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