我无法弄清楚这个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”
答案 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()