【问题标题】:Problems with subclasses, unexpected arguments and unsolved references子类问题、意外参数和未解决的引用
【发布时间】:2018-04-09 04:04:04
【问题描述】:

所以我正在尝试制作一个无尽的文字冒险游戏(使用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 声明 Weapon 类(super().__init__() 内部)中的 desc, name, usablevalue 是未解决的引用,并且它们是 BrokenSword(Weapon) 类中的意外参数。代码与教程一非常相似,那么它有什么问题呢?教程是用 python 2.x 编写的吗?如何修复我的代码?

【问题讨论】:

    标签: python python-3.x class subclass superclass


    【解决方案1】:

    Weapon 类不知道这些参数是什么。您必须在本地或 -god forbid- 全局定义它们。所以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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-12
      • 2014-05-19
      • 2020-10-15
      • 2011-12-19
      • 2015-04-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多