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 ответ

Решение

Python не распространяет код на локальный класс автоматически; Вы должны сказать это.

pp = self.foobar(arg1, arg2)

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

Другие вопросы по тегам