Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python错误是什么;名称';自我';“未定义”;什么意思?_Python - Fatal编程技术网

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

Python错误是什么;名称';自我';“未定义”;什么意思?,python,Python,我不知道这有什么问题: 错误输出: 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 Traceback(最近一次调用last):文件“prog.py”,第1行,

我不知道这有什么问题:

错误输出:

 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

Traceback(最近一次调用last):文件“prog.py”,第1行,在
A类(对象):文件“prog.py”,第5行,在
self.printme()name错误:未定义名称“self”

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

class A(object):
    def printme(self):
        print "A"
a = A()
a.printme()
名称
self
仅在显式声明名为
self
的参数的方法中定义。它未在类范围中定义

类范围仅在类定义时执行一次。用
A()
来“调用”类,则调用它的构造函数
\uuu init\uuu()
。所以也许你真的想要这个:

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

这正是它所说的:
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 __init__(self):
        self.printme()

    def printme(self):
        print "A"

a = A()

我知道这是可行的,但我要做的是访问类主体中的方法。self在类实例中不可调用吗?你为什么要这样做?@Yarin:你说的“可调用”是什么意思,而“在类实例中”又是什么意思?在定义时没有该类的实例——该类甚至还没有定义,因此不可能有实例。@Sven-好的,这很有意义-我的调用属于init主体。。。今天早上有点拉斯蒂。你仍然把init和self定义为一个论点。托马斯-是的,我刚刚弄明白-已经删除了评论-谢谢汉克斯-我在找什么-斯文刚刚第一个到达那里
class A(object):
    def __init__(self):
        self.printme()

    def printme(self):
        print "A"

a = A()