我的代码在哪里出错了?

时间:2016-10-23 16:01:42

标签: python python-3.x

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'

2 个答案:

答案 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)

你在那里犯了一堆错误:

  • 缩进您的Berserker方法以成为该课程的一部分
  • python中的Assignement是一个“=”而不是“==”(实际上和大多数编程语言一样)
  • 给出速度和hp初始值或者根本不把它们放在构造函数中,在python变量被赋值时创建。
  • 让您的Berserker方法返回一个字符串以便能够打印它
  • 创建班级实例

您的代码的工作版本应该是这样的:

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)