在类中调用基本方法

我正在开发游戏,我要做的一件事情就是拥有一个定义属性损坏的基类,并使用构造函数来初始化该值。这是我的基础课


class Weapon(object):

def __init__(self, damage):

    self.damage = damage

这是需要武器进行游戏的实际课程


class Crossbow(Weapon):

is_loaded = True

reloads = 5

def __init__(self, is_loaded, reloads):

    super(Crossbow, self).__init__()

    self.is_loaded = is_loaded

    self.reloads = reloads


def 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)

我以前使用过类,但是对于创建基类和构造函数并从中调用其他类是新手。如果有人可以帮助我理解我的问题,我将非常感激。


一只名叫tom的猫
浏览 146回答 2
2回答

梦里花落0921

使用c = Crossbow(initial_load_state, initial_reloads)而不是创建Crossbow的实例c = Crossbow(Weapon)。(此外,您的超类构造函数调用缺少damage参数。)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python