Python: NameError: 全局名称 'foobar' 未定义

31 投票
1 回答
54037 浏览
提问于 2025-04-16 06:23

我写了一个这样的类:

class myClass(object):
    def __init__(self):
        pass

    def foo(self, arg1, arg2):
        pp = foobar(self, arg1, arg2)
        if pp:
            return 42
        else
            return -666


    def foobar(self, arg1, arg2):
        if arg1 == arg2:
            return 42
        else:
            return None

这里面的逻辑其实没什么意义 - 可以忽略它。我想做的是在一个实例方法里调用另一个实例方法,但我遇到了一个 NameError 错误。我最开始以为这是因为 foo()foobar() 定义之前就调用了它,但我把函数定义的顺序调换了,结果也没有改变。

有没有人知道这个错误是怎么回事,以及怎么解决它?

1 个回答

53

在Python中,代码不会自动限制在本地类里面;你需要明确告诉它这样做。

pp = self.foobar(arg1, arg2)

http://docs.python.org/tutorial/classes.html

撰写回答