Python: NameError: 全局名称 'foobar' 未定义
我写了一个这样的类:
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)