當(dāng)我們在
python
的子類中調(diào)用父類的方法時赃份,會用到super()
歹颓,不過我遇到了一個問題择膝,順便記錄一下誓琼。
比如,我寫了如下錯誤代碼:
class A():
def dosomething(self):
print "It's A"
class B(A):
def dosomething(self):
super(B, self).dosomething()
if __name__ == '__main__':
b = B()
b.dosomething()
輸出報錯:
TypeError: must be type, not classobj
google之后發(fā)現(xiàn),python
在2.2前后有新式類(new-style class
)與舊式類(old-style class
)的區(qū)別肴捉,我上面的例子為舊式類腹侣,而super
關(guān)鍵字必須作用于新式類。
新式類:所有類都必須要有繼承的類齿穗,如果什么都不想繼承傲隶,就繼承到object類。
所以缤灵,解決此錯誤必須將A
類改為class A(object):