Python子类在构造函数中使用父变量

时间:2014-04-09 17:47:00

标签: python class

所以我正在研究基于文本的RPG,我有一个类似于这样的项目:

class Item:
    def __init__(self, name, value):
        self.name = name
        self.value = value

接下来我有一个武器类,我希望从item类继承,在武器构造函数中我希望它采用“name”和“value”变量。在我的脑海中它的工作原理如下:

class Weapon(Item):
    def __init(self, name, value, damage):
        self.damage = damage

我知道这是错误的,但这基本上是我认为应该如何运作的。我在“super()”函数中查找了一堆线程,但没有一个解释似乎是这样做的。那么这是可能的,还是应该让武器类分开?另外......当它工作时......构造函数调用的是什么样的?

2 个答案:

答案 0 :(得分:2)

您可以在Weapon课程中使用以下内容:

class Weapon(Item):
    def __init__(self, name, value, damage):
        super(Weapon, self).__init__(name, value)
        self.damage = damage

请务必使用新式课程,即继承自object

class Item(object):
    ...

答案 1 :(得分:0)

是的,调用父类的构造函数是您通常需要做的事情:

class Weapon(Item):
    def __init__(self, name, value, damage):
        # Initialize the Item part
        Item.__init__(self, name, value)

        # Initialize the Weapon-specific part
        self.damage = damage

至于将武器类别分开 - 你应该阅读composition over inheritance上的文章。人们对继承是否“正确”以及在哪种情况下有不同的看法。对不起,这太模糊了,但你没有提供有关你的用例的那么多信息: - )