31

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?

vaultah
  • 44,105
  • 12
  • 114
  • 143
skyeagle
  • 3,211
  • 11
  • 39
  • 41

1 Answers1

53

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

Glenn Maynard
  • 55,829
  • 10
  • 121
  • 131