python: NameError: глобальное имя '' не определено

в моем коде у меня есть:

class A:
    def a():
        ......

    def b():
        a()
        ......
    b()

Тогда компилятор скажет "NameError: глобальное имя a() не определено". Если я вытащу все вещи из класса A, это не будет проблемой, но как я могу определить метод в классе A? Большое Вам спасибо.


person Robert    schedule 09.07.2013    source источник
comment
Нет, это исключение выдает не компилятор. Это делает цикл интерпретатора Python.   -  person Martijn Pieters    schedule 10.07.2013
comment
Зачем вам вызывать a() из определения класса?   -  person Travis DePrato    schedule 10.07.2013
comment
@TravisGD Я всегда делаю это на Java, например, метод вызывается в другом методе...   -  person Robert    schedule 10.07.2013
comment
Нет, я имел в виду самую суть. Вы вызываете a() внутри определения класса. Вне метода, внутри определения.   -  person Travis DePrato    schedule 10.07.2013
comment
Если вы привыкли к Java, забудьте о ней, пока изучаете/программируете на python. Java — это совершенно другой язык; использование его парадигм и соглашений в python приведет только к плохому коду python. В этом случае: в python методы являются атрибутами экземпляра точно так же, как и все остальное. Если вы хотите получить к нему доступ, вы должны сначала получить доступ к атрибуту из экземпляра через self.method_name. Без явного self как бы вы могли отличить глобальную функцию от метода (примечание: функции могут быть созданы во время выполнения -> это невозможно).   -  person Bakuriu    schedule 10.07.2013


Ответы (1)


Вам нужно вызвать self.a(), чтобы вызвать a из b. a не глобальная функция, это метод класса.

Вы можете прочитать руководство по Python по классам, чтобы лучше понять детали вниз.

person Martijn Pieters    schedule 09.07.2013