类型错误:攻击()缺少 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'