首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeError: attack()缺少1个必需的位置参数:“self”

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

Stack Overflow用户
提问于 2015-05-12 02:18:07
回答 2查看 20.7K关注 0票数 4

嗨,我得到了这个错误

代码语言:javascript
复制
TypeError: attack() missing 1 required positional argument: 'self'

这是我的代码

代码语言:javascript
复制
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来将类放入im使用python 3.4和py charm。我实际上是从教程中得到这段代码的,我不知道我的错误在哪里。

EN

回答 2

Stack Overflow用户

发布于 2015-05-12 02:19:22

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

变化

代码语言:javascript
复制
enemy = Enemy

代码语言:javascript
复制
enemy = Enemy()

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

代码语言:javascript
复制
class Enemy:
    def __init__(self):
        self.life = 3
    ...
票数 6
EN

Stack Overflow用户

发布于 2015-05-12 02:18:51

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

代码语言:javascript
复制
enemy = Enemmy()

然后,该实例可作为self访问。如果你没有一个实例,那么它就会丢失,这就是错误消息告诉你的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30174847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档