问题
I have written the following class:
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
The logic is nonsensical - ignore it. What I am trying to so is to call an instance method from another instance method - and I am getting a NameError
. I originally thought that this was due to foo()
calling foobar()
before it had been defined - but switching the order of the function definitions in the script made no difference.
Does anyone what's causing this error, and how to fix it?
回答1:
Python doesn't scope code to the local class automatically; you need to tell it to.
pp = self.foobar(arg1, arg2)
http://docs.python.org/tutorial/classes.html
来源:https://stackoverflow.com/questions/4068785/python-nameerror-global-name-foobar-is-not-defined