类中未定义的名称

时间:2014-02-20 15:57:33

标签: python class self

为什么这会产生undefined name x?它被声明两次并全局设置。

class Pet():
    global x
    x = 0
    def __init__(self):
        global x
        x=0

    def getX():
        global x
        print x

1 个答案:

答案 0 :(得分:5)

嗯......不。全局意味着“它已在全球范围内声明,因此在那里查找”,但您尚未在那里声明它。尝试

x = 1

class Pet():
    global x
    x = 0
    def __init__(self):
        global x
        x=0

    def getX(self):
        print x

你没有给getX一个self参数,这也给出了一个错误。

我也不知道你要用所有这些全局变量来完成什么。它有点挫败了拥有漂亮,自足的课程的目的。

除非你做了一些奇怪的事情,否则你的代码应该类似于

class Pet:
    def __init__(self, x=0):
        self.x = x
    def __str__(self):
        return str(self.x)