首先把自己碰到的錯誤貼出來:
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)用方法