2016-07-22 153 views
-5

我來自Java和C#背景,學習python。我很奇怪,爲什麼這一段代碼給我一個錯誤在pycharm,說無法從函數調用函數Python

Unresolved Reference 'methodA' 

與此代碼

def a(): 
     print("hi") 

    def b(): 
     a() 
+1

你打電話給methodA和方法叫做? – 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 

但這種代碼(你很可能從報價)失敗了,因爲這個名字aC的成員。會員名稱不是其他成員函數內範圍:

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

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

還要注意的是,不像C++或Java的隱this指針,必須始終明確使用了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)