python使用super()出現(xiàn)錯(cuò)誤解決辦法
當(dāng)我們?cè)趐ython的子類中調(diào)用父類的方法時(shí),會(huì)用到super(),不過(guò)我遇到了一個(gè)問(wèn)題,順便記錄一下。
比如,我寫了如下錯(cuò)誤代碼:
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()
輸出報(bào)錯(cuò):
TypeError: must be type, not classobj
google之后發(fā)現(xiàn),python在2.2前后有新式類(new-style class)與舊式類(old-style class)的區(qū)別,我上面的例子為舊式類,而super關(guān)鍵字必須作用于新式類。
新式類:
所有類都必須要有繼承的類,如果什么都不想繼承,就繼承到object類。
所以,解決此錯(cuò)誤必須將A類改為class A(object):
以上就是python super()使用遇到問(wèn)題的解決辦法,如有疑問(wèn)請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
