我对python相对较新,我遇到了一些与命名空间有关的问题。
class a:
def abc(self):
print "haha"
def test(self):
abc()
b = a()
b.abc() #throws an error of abc is not defined. cannot explain why is this so
答案 0 :(得分:20)
由于test()
不知道谁是abc
,所以当您调用NameError: global name 'abc' is not defined
时,您看到的msg 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
答案 1 :(得分:10)
要从同一个班级调用方法,您需要self
关键字。
class a:
def abc(self):
print "haha"
def test(self):
self.abc() // will look for abc method in 'a' class
如果没有self
关键字,python会在全局范围内查找abc
方法,这就是您收到此错误的原因。