NameError:未定义全局名称“reverse”

时间:2013-02-25 03:56:50

标签: python

python的新手....真的与这个奇怪的错误相混淆.... 我不认为我做错了什么,是吗?

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])

我正在尝试使用反向进行递归调用.... 请帮忙。谢谢!

2 个答案:

答案 0 :(得分:4)

在您的班级Reverse中,reverse是一种方法,因此您需要将其称为方法:

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

请注意self

答案 1 :(得分:4)

与隐含this的其他语言不同,Python要求您在使用实例方法或变量时明确说出self,因此在Reverse中您需要明确说出

self.reverse(var[:-1])

当然reverse不会返回任何内容,因此您需要将其更改为

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