Определенный метод не определен внутри класса [duplicate]

Я отвечу ужасным, нарисованным рукой комиком. Второе изображение является причиной того, что result является undefined в вашем примере кода.

7
задан Christian Sauer 2 March 2015 в 09:03
поделиться

2 ответа

Поскольку test() не знает, кто является abc, этот msg NameError: global name 'abc' is not defined, который вы видите, должен произойти, когда вы вызываете b.test() (вызов b.abc() в порядке), измените его на:

class a:
    def abc(self):
        print "haha" 
    def test(self):
        self.abc()  
        # abc()

b = a()
b.abc() #  'haha' is printed
b.test() # 'haha' is printed
15
ответ дан Paul Lo 26 August 2018 в 13:15
поделиться

Чтобы вызвать метод из того же класса, вам понадобится ключевое слово self.

class a:
    def abc(self):
        print "haha" 
    def test(self):
        self.abc() // will look for abc method in 'a' class

Без ключевого слова self python ищет метод abc в глобальном scope, поэтому вы получаете эту ошибку.

8
ответ дан G5W 26 August 2018 в 13:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: