Python错误“name'self'未定义”是什么意思?

时间:2011-11-18 17:20:02

标签: python

我无法弄清楚这个very simple snippet

有什么问题
class A(object):
        def printme(self):
                print "A"

        self.printme()

a = A()
  

回溯(最近一次调用最后一次):文件“prog.py”,第1行,in          A类(对象):文件“prog.py”,第5行,A       self.printme()NameError:未定义名称“self”

4 个答案:

答案 0 :(得分:9)

以下内容应解释此问题。也许你想试试这个?

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()

答案 1 :(得分:3)

如果您打算在每次创建类的实例时运行该函数,请尝试以下操作:

class A(object):
    def __init__(self):
        self.printme()

    def printme(self):
        print "A"

a = A()

答案 2 :(得分:2)

这正是它所说的:self在您拨打self.printme()时未定义。在Python中,self并没有为你神奇地定义;它只能在一个名为self的参数的方法中工作。如果有帮助,请尝试在整个程序中使用其他内容替换单词self,例如foo(因为self作为标识符并没有什么特别之处。)

答案 3 :(得分:1)

如果要在实例化对象时使用打印内容:

class A(object):
    def __init__(self):
            self.printme()

    def printme(self):
            print "A"

a = A()