类型错误:攻击()缺少 1 个必需的位置参数:“自我”

Posted

技术标签:

【中文标题】类型错误:攻击()缺少 1 个必需的位置参数:“自我”【英文标题】:TypeError: attack() missing 1 required positional argument: 'self' 【发布时间】:2015-07-22 09:08:48 【问题描述】:

你好,我遇到了这个错误

TypeError: attack() missing 1 required positional argument: 'self'

这是我的代码

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()

我检查并查看了大多数地方说我在 def 攻击中忘记了自我 或者我需要制作一个 obj 来将课程放入 我正在使用带有 py 魅力的 python 3.4 我实际上是从教程中得到这段代码的,但我不知道我的错误是什么

【问题讨论】:

enemy=Enemmy -> enemy=Enemmy() 这能回答你的问题吗? TypeError: Missing 1 required positional argument: 'self' 【参考方案1】:

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

改变

enemy = Enemy

enemy = Enemy()

另外(正如 Kevin 在 cmets 中指出的那样)您的 Enemy 类可能应该有一个 init 方法来初始化其字段。例如

class Enemy:
    def __init__(self):
        self.life = 3
    ...

【讨论】:

【参考方案2】:

您需要创建和使用类的实例,而不是类本身:

enemy = Enemmy()

该实例随后可作为self 访问。如果您没有实例,那么它就丢失了,这就是错误消息告诉您的内容。

【讨论】:

以上是关于类型错误:攻击()缺少 1 个必需的位置参数:“自我”的主要内容,如果未能解决你的问题,请参考以下文章

类型错误:initialize() 缺少 1 个必需的位置参数:'url'

类型错误:parse() 缺少 1 个必需的位置参数:'stream'

类型错误:预测()缺少 1 个必需的位置参数:'params'

类型错误:new() 缺少 1 个必需的位置参数:'y'

类型错误:<lambda>() 缺少 1 个必需的位置参数:'w'

类型错误:get() 缺少 1 个必需的位置参数:'index1'