TypeError:attack()缺少1个必需的位置参数:'self'

Sah*_*ory 2 python class typeerror python-3.x

嗨我得到这个错误

TypeError: attack() missing 1 required positional argument: 'self'
Run Code Online (Sandbox Code Playgroud)

这是我的代码

class Enemmy :
    life = 3
    self = ""
    def attack(self):
        print ("ouch!!!!")
        self.life -= 1

    def checkLife(self):
        if self.life <= 0 :
            print ("dead")
        else:
            print (self.life)

enemy=Enemmy
enemy.attack()
Run Code Online (Sandbox Code Playgroud)

我检查并查看大多数地方说我忘了自我在def攻击或我需要做一个obj把我的类使用python 3.4与py魅力我实际上从教程得到这个代码,我不知道我的是什么错误

khe*_*ood 5

你没有实例化你的Enemy课程.您正在创建对类本身的新引用.然后,当你尝试调用一个方法时,你正在调用它而没有一个实例,它应该进入self参数attack().

更改

enemy = Enemy
Run Code Online (Sandbox Code Playgroud)

enemy = Enemy()
Run Code Online (Sandbox Code Playgroud)

另外(正如Kevin在评论中指出的那样)你的Enemy类应该有一个init方法来初始化它的字段.例如

class Enemy:
    def __init__(self):
        self.life = 3
    ...
Run Code Online (Sandbox Code Playgroud)