NameError: 全局名称 'reverse' 未定义

1 投票
2 回答
5723 浏览
提问于 2025-04-17 17:00

我刚接触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 个回答

4

在你的类 Reverse 中,reverse 是一个方法,所以你需要像调用方法一样来使用它:

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

注意 self 的用法。

4

跟一些其他编程语言不同,在Python中,this是隐含的,而你需要明确地使用self来表示实例方法或变量。所以在Reverse这个类里,你必须明确地写出

self.reverse(var[:-1])

当然,reverse这个方法并不会返回任何东西,所以你需要把它改成

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

撰写回答