2016-07-22 3 views
-5

Я исхожу из фона Java и C# и изучая python. Я задаюсь вопросом, почему этот кусок кода дает мне ошибку в PyCharm, что говоритНевозможно вызвать функцию из функции Python

Unresolved Reference 'methodA' 

с этим кодом

def a(): 
     print("hi") 

    def b(): 
     a() 
+1

Вы вызываете методA, и метод называется? – AK47

+1

Это в классе? Попробуйте 'def b (self): self.a()' –

+0

Это работает отлично для меня, и IIRC, в python нет ошибки 'Unresolved Reference'? – noteness

ответ

3

Этот код (весь код писал) должен работать идеально, потому что имя a был введен в глобальную область видимости:

def a(): 
    print("hi") 

def b(): 
    a() 

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

Но этот код (то, что вы, вероятно, цитирую) должны потерпеть неудачу, потому что имя a является член C. Имена участников не в сферу внутри других функций-членов:

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

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

отметить также, что, в отличие от C++ или неявной this указатель в Java, то self ссылка должна всегда быть явно используется. Попробуйте это вместо:

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) 
Смежные вопросы