代码之家  ›  专栏  ›  技术社区  ›  Bernardozomer

子类、意外参数和未解决引用的问题

  •  1
  • Bernardozomer  · 技术社区  · 8 年前

    所以我正在尝试制作一个无休止的文字冒险游戏(使用 this 但是我的课程有一些问题:

    class Item:
    def __init__(self, name, desc, usable, value):
        self.name = name
        self.desc = desc
        self.usable = usable
        self.value = value
    
    def __str__(self):
    
        return "{}\n=====\n{}\nValue: {}\n".format(self.name, self.desc, self.usable, self.value)
    
    
    class Weapon(Item):
    
        def __init__(self, damage):
            self.damage = damage
            super().__init__(desc, name, usable, value)
    
        def __str__(self):
            return "{}\n=====\n{}\nValue: {}\nDamage: {}".format(self.name, self.damage, self.desc, self.usable, self.value)
    
    
    class BrokenSword(Weapon):
    
        def __init__(self):
            super(Weapon, self).__init__(name="Broken Sword",
                                         desc="A sword that didn't resist time.",
                                         value=1,
                                         usable=0,
                                         damage=1)
    

    PyCharm表示 desc, name, usable value Weapon 等级(内部 super().__init__() BrokenSword(Weapon) 班代码与教程非常相似,那么它有什么问题?教程是用python 2编写的吗。x?如何修复代码?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Daniel    8 年前

    这个 Weapon 类不知道这些参数是什么。你必须在本地或全球范围内定义它们。所以 Weapon.__init__

    class Weapon(Item):
        def __init__(self, desc, name, usable, value, damage):
            super().__init__(
                desc=desc,
                name=name,
                usable=usable,
                value=value
            )
            self.damage = damage
    
    推荐文章