0
でスーパーを使用して、私はプログラムのエラーを取得しています:だから、どのように我々が想定している混乱は、Python
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でスーパークラスのメソッドをオーバーライドする:
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()
私はエラーを取得しますか?
また、サブクラス化中にスーパークラスに変更や追加を行うための標準的な方法はありますか?サブクラスのinit関数内でスーパークラスをニアライズしますか?
乾杯!
おそらく、古いスタイルのクラスではスーパーが動作しないPython 2.xを使用しています。 3.xにアップグレードします。そしてGoogleにあなたのエラーメッセージ。 – jonrsharpe
あなたは 'TennisPlayer'で' object'から継承しています。 – user2357112
@ user2357112私は暗黙のうちにそれを読んだ。 – Rafael