我正在开发游戏,我要做的一件事情就是拥有一个定义属性损坏的基类,并使用构造函数来初始化该值。这是我的基础课class Weapon(object):def __init__(self, damage): self.damage = damage这是需要武器进行游戏的实际课程class Crossbow(Weapon):is_loaded = Truereloads = 5def __init__(self, is_loaded, reloads): super(Crossbow, self).__init__() self.is_loaded = is_loaded self.reloads = reloadsdef reload(self): print "You need to reload, before you can fire again" time.sleep(2) if reloads > 0: print "Reloading bow" time.sleep(2) reloads -= 1 is_loaded = True print "Successfully reloaded bow" time.sleep(1) print "You now have",reloads,"arrow left" time.sleep(2) else: print "You don't have any more arrows" time.sleep(2)我正在使用以下方法测试重新加载功能:c = Crossbow(Weapon)for i in range(1,6): c.reload()我运行class方法6次的原因是,我想测试reload变量,该变量计算了您重新加载的次数。它每次计数都会减去,一旦达到零,就不会让您重新加载,因此6次就可以测试全部功能。但是,当我运行该代码块时,出现以下错误:me.py", line 47, in <module>c = Crossbow(Weapon)TypeError: __init__() takes exactly 3 arguments (2 given)我以前使用过类,但是对于创建基类和构造函数并从中调用其他类是新手。如果有人可以帮助我理解我的问题,我将非常感激。
2 回答
梦里花落0921
TA贡献1772条经验 获得超6个赞
使用c = Crossbow(initial_load_state, initial_reloads)
而不是创建Crossbow的实例c = Crossbow(Weapon)
。(此外,您的超类构造函数调用缺少damage
参数。)
添加回答
举报
0/150
提交
取消