2013-02-25 106 views
1

新的python ....真的與這個奇怪的錯誤混淆.... 我不認爲我做錯了什麼,是嗎?NameError:沒有定義全局名稱'reverse'

main.py

from methods import Reverse 

def main(): 

    b = [1,2,3,4,5,6,6,7,8,8,9,1,212,312,31,23,123455435,56,56,123] 
    a = "llaa" 

    thing = Reverse() 
    print thing.reverse(a) 


main() 

methods.py

class Reverse(): 

    def __init__(self): 
    print "initialized reverse" 

    def reverse(self,var): 
    if var == "": 
     return var 
    else: 
     print var[-1] + reverse(var[:-1]) 

我試圖做反向遞歸調用.... 敬請幫助。謝謝!

+3

無論誰教過你'反向'應該是一類需要起訴的教育弊端。 – 2013-02-25 04:05:44

+0

我回滾了你的編輯。如果您認爲問題已解決,則應在下面的答案之一(綠色選中標記)中解決 - 不要將問題答案放在問題本身中。 – 2013-02-25 04:07:51

回答

4

不像this是隱含的一些其他語言,Python的需要你明確地說self每當使用實例方法或變量,這樣在Reverse你需要明確地說

self.reverse(var[:-1]) 

當然reverse並不返回任何東西,所以你需要將其更改爲

return var[-1] + self.reverse(var[:-1]) 
+0

實際上它應該是返回var [-1] + self.reverse(var [: - 1]) – user805981 2013-02-25 04:07:11

+0

是的,我的錯誤 – Ric 2013-02-25 04:07:51

+0

,但我們可以做一個打印?我認爲我們可以將str()放在它的周圍..:/ – user805981 2013-02-25 04:08:16

4

在你Reverse類,reverse是一個方法,所以你需要調用它的方法:

print var[-1] + self.reverse(var[:-1]) 

注意self

+0

謝謝:) 現在..我得到這個'TypeError:不能連接'str'和'NoneType'對象' – user805981 2013-02-25 04:02:58

+0

現在明白了:) thx !!! – user805981 2013-02-25 04:04:34

相關問題