所以我正在研究基于文本的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()”函数中查找了一堆线程,但没有一个解释似乎是这样做的。那么这是可能的,还是应该让武器类分开?另外......当它工作时......构造函数调用的是什么样的?
答案 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上的文章。人们对继承是否“正确”以及在哪种情况下有不同的看法。对不起,这太模糊了,但你没有提供有关你的用例的那么多信息: - )