0
使用超我得到一個錯誤的程序:混亂Python中
class TennisPlayer():
def __init__(self, rank):
self.rank = rank
def slogan(self):
print("What Slogan!")
class GrandSlamWinner(TennisPlayer):
def __init__(self, rank=0, slams=0):
TennisPlayer.__init__(self, rank)
self.slams = slams
def slogan(self):
super(GrandSlamWinner, self).slogan()
print("This: Are you serious!!")
if __name__ == "__main__":
mcenroe = GrandSlamWinner(1,7)
print(mcenroe.slams)
mcenroe.slogan()
我得到的錯誤:
Traceback (most recent call last):
File "subclassing.py", line 18, in <module>
mcenroe.slogan()
File "subclassing.py", line 12, in slogan
super(GrandSlamWinner, self).slogan()
TypeError: super() argument 1 must be type, not classobj
那麼,我們怎麼來覆蓋Python的超類的方法呢?
此外,是否有任何標準的方法來修改或添加到超類而子類化,如一套約定 - 例如,在子類的初始化函數中使用超類嗎?
乾杯!
想必您使用的是Python 2.x,其中super不適用於舊式類。升級到3.x.並谷歌你的錯誤信息。 – jonrsharpe
你忘了從'TennisPlayer'中的'object'繼承。 – user2357112
@ user2357112我讀到這是隱含的。 – Rafael