2016-06-05 15 views
0

So bin ich völlig verwirrt, warum meine Player-Klassenmethode nicht funktioniert.Probleme mit Klassenmethoden

Hier ist ein Teil meiner Spielerklasse:

class Player(pygame.sprite.Sprite): 
    def __init__(self): 

     super(Player, self).__init__() 
     self.size = self.w,self.h = 75,75 
     self.image = pygame.Surface((self.size)) 
     self.image.fill(white) 

     self.move_y = 0 
     self.move_x = 0 

     self.level = None 

     def set_properties(self): 

      self.rect = self.image.get_rect() 

      self.speed = 5 

     def set_position(self, x, y): 
      self.rect.x = x 
      self.rect.y = y 

Hier ist, wo ich die Methode aufrufen, set_position.

player = Player() 
player.set_position(40, 40) 

Alles scheint in Ordnung, aber ich bekomme die folgende Fehlermeldung:

Traceback (most recent call last): 
    File "C:/Desktop/CubeRunner/main_v2.py", line 194, in <module> 
    player.set_position(40, 40) 
AttributeError: 'Player' object has no attribute 'set_position' 
+2

Ausgehend von Ihrem Einzug definieren Sie Ihre Methoden in Ihrer init-Methode. Entpacke sie so, dass sie dem Level deiner init-Methode entsprechen und du solltest in Ordnung sein. Stellen Sie außerdem sicher, dass Sie die init-Methode unter der Klassendeklaration einrücken. Momentan gehört es nicht zur Klasse. –

Antwort

2

Wie Maurice sagte, Ihr Problem mit dem Einzug ist. Python ist sehr streng über Einrückung im Code, da es so wichtig ist. Einrückungen ersetzt geschweiften Klammer, Semikolons usw.

Hier ist der Code mit dem richtigen Einzug:

class Player(pygame.sprite.Sprite): 
    def __init__(self): 

     super(Player, self).__init__() 
     self.size = self.w,self.h = 75,75 
     self.image = pygame.Surface((self.size)) 
     self.image.fill(white) 

     self.move_y = 0 
     self.move_x = 0 

     self.level = None 

    def set_properties(self): 

     self.rect = self.image.get_rect() 

     self.speed = 5 

    def set_position(self, x, y): 
     self.rect.x = x 
     self.rect.y = y 

Wenn Sie mehr Informationen über Einzug in Python mögen (und warum es auf diese Weise) Besuche diese Antworten:

+0

Haha. Sorglose Fehler wie diese lassen mich lachen. Danke, dass du das herausgefunden hast. Ich komme von einem Java-Hintergrund, also vergesse ich manchmal über diese Sachen xD –

+0

Haha kein Problem - es passiert mir die ganze Zeit auch :) Hoffe, dass dein Projekt großartig wird! – abhi