NameError:没有定义全局名称'reverse'

问题描述:

新的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

不像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

在你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