2017-06-13 3 views
1

Ich bin brandneu bei Python und versuche zu lernen, wie man mit Klassen arbeitet. Weiß jemand, wie funktioniert das nicht? Irgendwelche zusätzlichen Tipps über das Schlüsselwort "selbst" würden sehr geschätzt werden.Python-Fehler: fehlt 1 erforderliches Positionsargument: 'self'

Der Code:

class Enemy: 
    life = 3 

    def attack(self): 
     print('ouch!') 
     self.life -= 1 

    def checkLife(self): 
     if self.life <= 0: 
      print('I am dead') 
     else: 
      print(str(self.life) + "life left") 


enemy1 = Enemy 
enemy1.attack() 
enemy1.checkLife() 

Der Fehler:

C:\Users\Liam\AppData\Local\Programs\Python\Python36-32\python.exe C:/Users/Liam/PycharmProjects/YouTube/first.py 
Traceback (most recent call last): 
    File "C:/Users/Liam/PycharmProjects/YouTube/first.py", line 16, in <module> 
    fuck.attack() 
TypeError: attack() missing 1 required positional argument: 'self' 

Process finished with exit code 1 
+0

'enemy1 = Enemy' ist nicht, wie instanziiert und' Enemy' Objekt. Sie haben der Variablen "enemy1" die Klasse "Feind" zugewiesen. –

+1

'Feind 'ist die Klasse. 'Enemy()' ist eine neue Instanz der Klasse. Setze 'Feind1' auf Letzteres. – Ryan

+0

https://pythontips.com/2013/08/07/the-self-variable-in-python-explained/ – Rosh

Antwort

2

Enemy ist die Klasse. Enemy() ist eine Instanz der Klasse Enemy. Sie müssen die Klasse initialisieren,

enemy1 = Enemy() 
enemy1.attack() 
enemy1.checkLife() 
+0

Vielen Dank. Das hat funktioniert. –

+0

Würden Sie mir bitte einen Gefallen tun und die Antwort als ausgewählt markieren? – zaidfazil

+0

Sicher. Es heißt, ich muss 7 Minuten warten, bevor ich das mache. Also werde ich es in 7 Minuten als akzeptiert markieren. –

Verwandte Themen