【问题标题】:Global Name 'q' not Defined - Python全局名称'q'未定义 - Python
【发布时间】:2017-02-03 06:42:24
【问题描述】:

我有一个类似的程序:

class ABC:

    q = {}

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

我收到错误:

"NameError: 全局名称 'q' 未定义"

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

【问题讨论】:

  • 你的代码不是有效的python,所以很难判断你的意图是什么。

标签: python nameerror


【解决方案1】:

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

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

【讨论】:

    【解决方案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
    

    【讨论】:

    • 哦,谢谢雷蒙德,我想我明白了。但是我为什么要选择一个呢?
    猜你喜欢
    • 2013-08-23
    • 2013-11-12
    • 2014-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-26
    • 2013-07-28
    • 2013-07-20
    相关资源
    最近更新 更多