Я отвечу ужасным, нарисованным рукой комиком. Второе изображение является причиной того, что result
является undefined
в вашем примере кода.
Поскольку 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
Чтобы вызвать метод из того же класса, вам понадобится ключевое слово 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, поэтому вы получаете эту ошибку.