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
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
...
You need to create and use an instance of the class, not the class itself:
enemy = Enemmy()
That instance is then accessible as self
. If you don't have an instance, then it's missing and that's what the error message tells you.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With