Python错误“未定义名称'自我'”是什么意思?


问题内容

我不知道这个非常简单的代码片段出了什么问题:

class A(object):
        def printme(self):
                print "A"

        self.printme()

a = A()

错误输出:

 Traceback (most recent call last):   File "prog.py", line 1, in
 <module>
     class A(object):   File "prog.py", line 5, in A
     self.printme() NameError: name 'self' is not defined

问题答案:

以下应解释该问题。也许您会想尝试一下?

class A(object):
    def printme(self):
        print "A"
a = A()
a.printme()

名称self仅在显式声明名为的参数的方法内定义self。它不是在类范围内定义的。

类范围在类定义时仅执行一次。用该类A()的构造函数“调用”该类__init__()。所以也许您实际上想要这样:

class A(object):
    def __init__(self):
        self.printme()
    def printme(self):
        print "A"
a = A()