【发布时间】:2020-04-28 09:55:30
【问题描述】:
所以我似乎无法弄清楚如何从我的班级继承__init__。
我正在尝试自己制作一个角色扮演游戏,而我最近才了解到使用继承来制作我的敌人、角色和类似的东西是一个更好的主意。
所以我开始使用它来对付敌人,但遇到了 init 方法的问题。
这是我的敌人班:
class Enemy():
def __init__(self, number_of, name):
self.number_of = int(number_of)
self.name = name
self.hp = 20 * self.number_of
self.dmg = 2 * self.number_of
def attack(self, player):
dmg = 0
player.hp -= dmg
def appearing(self):
if self.number_of > 1:
print (f"{self.number_of} {self.name}s have appeared")
else:
print(f"A {self.name} has appeared")
我尝试了不同的方法来制作特定的敌人类别。我将留下这些方法,因为它们对我来说很好用,并专注于我班级的 init。 所以首先我尝试这样做:
class Orc():
def __init__(self):
Enemy.__init__(self,number_of, name)
但是 Python 使它成为类型错误: TypeError: init() 接受 1 个位置参数,但给出了 3 个
我也试过把self放在number_of和name前面,但还是出现了同样的错误。
然后我尝试在原始 init 中输入参数:
class Orc():
def __init__(self, number_of,name):
Enemy.__init__(self,self.number_of, self.name)
但这只是导致了一个属性错误:
AttributeError: 'Orc' 对象没有属性 'number_of'
然后我试着把 self.在 init 前面,但随后出现了语法错误。
我只是为每个类(每种类型的敌人)做了不同的 init,甚至没有在父(敌人)类中使用 init。
那么我做错了什么,我能做些什么呢,在父类中实际使用 init 方法,并保存一些代码
【问题讨论】:
-
我没有看到任何继承。
-
好的,所以它现在可以工作了。我很困惑,我一定是在我多次尝试开始时的某个时候删除了它。无论如何感谢您的帮助
标签: python class inheritance