为了账号安全,请及时绑定邮箱和手机立即绑定

在类中调用基本方法

在类中调用基本方法

一只名叫tom的猫 2021-03-30 21:02:19
我正在开发游戏,我要做的一件事情就是拥有一个定义属性损坏的基类,并使用构造函数来初始化该值。这是我的基础课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参数。)


查看完整回答
反对 回复 2021-04-05
  • 2 回答
  • 0 关注
  • 145 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信