Python错误“name‘self’is not defined”是什么意思?

2024-04-28 15:05:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我搞不清这是怎么回事very simple snippet

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


Tags: inpyselfobjectdef错误linesimple
3条回答

这正是它所说的:self在调用self.printme()时没有定义。self不是在Python中神奇地为您定义的;它只在一个名为self的参数的方法中工作。如果有帮助的话,试着在整个程序中将单词self替换为其他单词,比如foo(因为self作为标识符没有什么特别的)。

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

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

    def printme(self):
        print "A"

a = A()

下面应该解释这个问题。也许你想试试这个?

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

相关问题 更多 >