Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

hi im getting this error

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

and this is my code

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

i checked and looked most places says i forgot the self in the def attack or that i need to make an obj to put the class in im useing python 3.4 with py charm i actually got this code from a tutorial and i dont know what is my mistake

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
900 views
Welcome To Ask or Share your Answers For Others

1 Answer

You're not instantiating your Enemy class. You are creating a new reference to the class itself. Then when you try and call a method, you are calling it without an instance, which is supposed to go into the self parameter of attack().

Change

enemy = Enemy

to

enemy = Enemy()

Also (as pointed out in by Kevin in the comments) your Enemy class should probably have an init method to initialise its fields. E.g.

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...