全局名称'q'未定义 - Python

时间:2016-09-26 02:55:50

标签: python nameerror

我有一个类似的程序:

class ABC:

    q = {}

    def update:
        self.state = (xx,xx)
        global q
        if self.state in q:
            // do something

我收到错误:

  

“NameError:未定义全局名称'q'”

我是python的新手,需要一些帮助。

2 个答案:

答案 0 :(得分:2)

您可以在课堂外移动 q

q = {}

class ABC: 

    def update:
        self.state = (xx,xx)
        global q
        if self.state in q:
            # do something
            pass

或者您可以将 q 作为类变量引用:

class ABC:

    q = {}

    def update:
        self.state = (xx,xx)
        if self.state in ABC.q:
                # do something
                pass

答案 1 :(得分:0)

q在这里没有被声明为全局变量 - 它被声明为类ABC的类变量。

如果您希望q是全局的,则应在开始声明该类之前定义它。