class Player:
def __init__(self):
self.speed
self.hp
def Berserker(self):
self.speed == 12
self.hp == 6
print("Berserkers stats are: " + Berserker())
那么,我做错了什么?如您所见,我对Python很新。 我得到的错误是:TypeError:Berserker()缺少1个必需的位置参数:'self'
答案 0 :(得分:1)
你错过了很多东西,但我会帮你的!
您的__init__
功能无效。让我们给它一些基本统计数据。我会说Player
的默认速度和健康状况分别为10和100。然后我们将Berserker
作为Player
的子类(我认为这就是你想要的?)。最后,我将给Player
一个方法,允许您为其值获取字符串格式的输出。
首先,新的Player
:
class Player:
def __init__(self, speed=10, health=100):
self.speed = speed
self.health = health
def __str__(self):
return "A player with speed {} and health {}.".format(self.speed, self.health)
现在是Berserker
。我会给它一个15的基本速度和85的健康。(显然具体取决于你!)
class Berserker(Player):
def __init__(self):
super().__init__(speed=15, health=85)
最后,我们可以创建这些并打印该值。我将制作几个不同的版本,以便您可以看到它是如何工作的。 (我将使用常规的Python解释器。)
>>> p1 = Player()
>>> p2 = Player(7, 120)
>>> b = Berserker()
>>> print(p1)
A player with speed 10 and health 100.
>>> print(p2)
A player with speed 7 and health 120.
>>> print(b)
A player with speed 15 and health 85.
希望这给你一个开始的好地方!
答案 1 :(得分:1)
你在那里犯了一堆错误:
您的代码的工作版本应该是这样的:
class Player:
def __init__(self):
self.speed = 0
self.hp = 0
def Berserker(self):
self.speed = 12
self.hp = 6
return "speed {} hp {}".format(self.speed,self.hp)
m = Player()
print("Berserkers stats are: " + m.Berserker())
现在这是一个有效的版本,但IMO的设计仍然很差,这样做更好:
class Player:
def __init__(self):
self.speed = 0
self.hp = 0
def Berserker(self):
self.speed = 12
self.hp = 6
def __str__(self):
return "speed {} hp {}".format(self.speed,self.hp)
m = Player()
m.Berserker()
print(m)