Python错误:缺少1个必需的位置参数:'self'

5
我是一名新手学习Python,正在尝试学习如何使用类。有人知道为什么这个代码无法工作吗?如果对“self”关键字有更多的提示,将不胜感激。
代码如下:
class Enemy:
    life = 3

    def attack(self):
        print('ouch!')
        self.life -= 1

    def checkLife(self):
        if self.life <= 0:
            print('I am dead')
        else:
            print(str(self.life) + "life left")


enemy1 = Enemy
enemy1.attack()
enemy1.checkLife()

这个错误:

C:\Users\Liam\AppData\Local\Programs\Python\Python36-32\python.exe C:/Users/Liam/PycharmProjects/YouTube/first.py
Traceback (most recent call last):
  File "C:/Users/Liam/PycharmProjects/YouTube/first.py", line 16, in <module>
    enemy1.attack()
TypeError: attack() missing 1 required positional argument: 'self'

Process finished with exit code 1

"enemy1 = Enemy" 不是实例化 Enemy 对象的正确方式。你只是将 Enemy 类赋值给了变量 enemy1 - juanpa.arrivillaga
1
Enemy 是一个类。Enemy() 是该类的一个新实例。将 enemy1 设置为后者。 - Ry-
https://pythontips.com/2013/08/07/the-self-variable-in-python-explained/ - syntaxError
谢谢大家,那个起作用了。 - Liam Hayes
1个回答

7

Enemy是一个类,Enemy()是该类的一个实例。您需要初始化这个类。

enemy1 = Enemy()
enemy1.attack()
enemy1.checkLife()

你能帮我一个忙吗?把答案标记为已选择的吗? - zaidfazil
当然。它说我必须等待7分钟才能这样做。所以我会在7分钟后将其标记为已接受。 - Liam Hayes
感谢支持,兄弟!! - zaidfazil
没问题 :) 我已经选择了你的答案。 - Liam Hayes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接