2013-07-09 17 views
32

in meinem Code definiert ist, ich habe:Python: Nameerror: global Name‘...‚nicht

class A: 
    def a(): 
     ...... 

    def b(): 
     a() 
     ...... 
    b() 

Dann wird der Compiler sagen "Nameerror:. Globaler Name a() nicht definiert ist" Wenn ich alle Sachen aus der Klasse A heraushole, wäre das kein Problem, aber wie kann ich die Methode in Klasse A definieren? Vielen Dank.

+0

Nein, es ist nicht der Compiler, der diese Ausnahme auslöst. Es ist die Python-Interpreter-Schleife, die das tut. –

+0

Warum würden Sie ein() aus der Klassendefinition heraus aufrufen? –

+0

@TravisGD Ich mache das immer in Java, wie eine Methode in einer anderen Methode aufgerufen wird ... – Robert

Antwort

58

Sie müssen self.a() aufrufen, um a von b aufzurufen. a ist nicht eine globale Funktion, es ist eine Methode für die Klasse.

Sie möchten vielleicht durch die Python tutorial on classes etwas mehr lesen, um die feineren Details zu erhalten.

+0

Danke, aber muss ich "self" in den Methodenparametern hinzufügen: a (self), b (self)? – Robert

+0

Darüber hinaus denke ich, Sie müssten Aa() eine statische Methode oder eine Klassenmethode machen, da Ihr Versuch, Aa() aufzurufen, bevor Sie eine Instanz von A instanziiert haben, das "self" (erste Instanz Methode Argument) zu Aa() wäre undefiniert. Ich bin mir nicht sicher, warum man das noch so machen würde oder wie man die Argumente/Referenzen entwirren würde. –

+0

@Matthias Danke ... Ich studiere es .. – Robert

Verwandte Themen