2016-07-22 22 views
-5

Ich komme aus einem Java und C# Hintergrund und lernen Python. Ich frage mich, warum dieses Stück Code mir einen Fehler in PyCharm gibt, dieKann eine Funktion nicht von einer Funktion aufrufen Python

Unresolved Reference 'methodA' 

mit diesem Code sagt

def a(): 
     print("hi") 

    def b(): 
     a() 
+1

Sie rufen methodA und die Methode heißt? – AK47

+1

Ist es in einer Klasse? Versuchen Sie 'def b (self): self.a()' –

+0

Es funktioniert völlig gut für mich, und IIRC, gibt es keine 'Unsolved Reference' Fehler in Python? – noteness

Antwort

3

Dieser Code (der gesamte Code, den Sie geschrieben) sollte perfekt funktionieren, weil der Name a wurde in den globalen Bereich eingeführt:

def a(): 
    print("hi") 

def b(): 
    a() 

b() # call b, which in turn calls a 

Aber dieser Code (was Sie wahrscheinlich von zitieren) ausfallen sollte, weil der Name a a Mitglied von C. Mitgliedernamen sind in ihrem Umfang nicht innerhalb anderen Mitgliederfunktionen:

class C: 
    def a(): 
     print("hi") 

    def b(): 
     a() 
o = C() 
o.b() # should fail for several reasons. 

auch zur Kenntnis, dass im Gegensatz zu C++ oder Java impliziten this Zeigern, die self Referenz immer explizit verwendet werden muss. Versuchen Sie dies stattdessen:

class C: 
    def a(self): 
     print("hi") 

    def b(self): 
     self.a() 

o = C() 
o.b() # calls C.b(o), which in turn calls C.a(o) 
Verwandte Themen