2017-03-27 6 views
0

Ich habe eine Klasse namens Spiel, in dem ich habeVerständnis Python __init__

class Game: 
    def __init__(self, x, y, z): 
     self.x = x 
     self.y = y 
     self.z = z 

und unten alles, was ich habe

def main(): 
    g = Game() 
    while True: 
     g.__init__(5,10,4) 

wenn mein Programm läuft bekomme ich folgende Fehlermeldung:

TypeError: __init__() takes exactly 4 arguments (1 given) 

Ich nehme an, mein Verständnis von __init__ muss fehlen, aber ich verstehe nicht, warum dies das passiert. Kann init keine Parameter übernehmen?

+0

Sie sollten fast nie explizit 'init' aufrufen. Es heißt * implicitely * wenn du 'Game()' machst. Beachten Sie, dass der Fehler von dieser Zeile kommt, da nur ein einzelnes Argument ('self') an'__init__' übergeben wird, aber auch' x', 'y' und' z' –

+0

, manchmal ausgenommen, wenn 'super' gemacht wird() .__ init __() ' – abccd

Antwort

1

Sie rufen nicht __init__ explizit aus dem Hauptprogramm; Dies wird automatisch beim Erstellen einer Instanz (Objekt) vom Typ Spiel aufgerufen. Was Sie brauchen, ist viel einfacher:

def main(): 
    g = Game(5, 10, 4) 

Die vier Argumente sind Selbst und die drei ganze Zahlen sind; Der Fehler kommt von der ursprünglichen Formation, wo Sie es nur self gaben.

Beachten Sie auch, dass Ihre letzten beiden Zeilen eine Endlosschleife zum Initialisieren des Objekts gewesen wären. Dies würde dein Spiel sehr langweilig machen, da es nie mit der Initialisierung enden würde. :-)