【发布时间】:2014-12-10 18:31:32
【问题描述】:
为了学习OOP,我尝试写一个基于终端的RPG,所以我写了这段代码:
class car(object): #car is the short form of Character
def __init__(self):
self.leben = 100
self.speed = 10
self.SD = 20
def attack(self, life):
#life-= self.SD
#return life
pass
def stats(self):
print 'Leben: '
print self.leben
print 'Geschwindigkeit: '
print self.speed
print 'Schaden: '
print self.SD
class wojok(car):
def __init__(self):
super(car.__init__(self)).__init__()
self.SD = 50
C = wojok()
while True:
e = raw_input('Befehl: ')
if e == 'info':
C.stats()
elif e == 'stop':
break
现在我得到了错误:
TypeError: unbound method __init__() must be called with car instance as first argument(got nothing instead)
但是当我尝试将 car 的实例作为第一个参数传递给 init 时,我得到了错误:
TypeError: unbound method __init__() must be called with car instance as first argument(got instance instead)
我必须使用什么作为第一个参数?
【问题讨论】:
-
@gmauch 我认为不是这样,尤其是在查看已接受的答案时。问题似乎是在 OP 的代码中滥用了
super(因此试图调用未绑定的__init__)。 -
@gmauch 在这种特定情况下很好,这个问题有一个很好的具体答案,而你的欺骗目标有一个非常模糊的解释。无论如何,我建议不要将各种旧的和不活跃的问题标记为关闭。这对社区没有帮助:) 如果您希望标记为关闭,请针对新问题,这样您可以防止重复问题的新答案。总体思路是“只有在有一些非常新的活动时才标记/投票关闭旧问题”。
-
@AndrasDeak 感谢您的解释,但是我在哪里可以找到这条“如果有一些非常新的活动,只有标记/投票关闭旧问题”规则?在我看来,无论年龄多大,骗子都是骗子。在我的情况下(以及其他任何有同样问题的人),如果只引用一个问题会更好,所以我不必搜索 7 个(据说)非常相似的问题。看起来他们每个人的 OP 在询问之前都没有在 StackOverflow 中进行太多搜索。你认为在 Meta 中问这个值得吗?