函数名在python类中是未定义的

时间:2015-03-02 08:02:23

标签: python undefined

我对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

2 个答案:

答案 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方法,这就是您收到此错误的原因。