Подтвердить что ты не робот

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() до его определения, но изменение порядка определений функций в script не имело никакого значения.

Кто-нибудь, что вызывает эту ошибку, и как ее исправить?

4b9b3361

Ответ 1

Python автоматически не передает код локального класса; вам нужно сказать это.

pp = self.foobar(arg1, arg2)

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