0

可能重复:
UnboundLocalError:分配前引用的局部变量“url_request”

这是我的模块的完整代码,称为util.py

import my_other_module

__IMPORTANT_OBJECT__ = None

def getImportantObject():
    if __IMPORTANT_OBJECT__ is None:
        __IMPORTANT_OBJECT__ = my_other_module.ImportantObject()
    return __IMPORTANT_OBJECT__

我的理解是带有双下划线前缀的变量被认为是模块私有的。这里的想法是我想存储对重要对象的私有引用,并将其返回给通过该getImportantObject()方法请求它的任何人。但我不希望在第一次调用此方法之前启动对象。

但是,当我运行代码时,出现以下错误:

File "/Users/Jon/dev/util.py", line 6, in getImportantObject
    if __IMPORTANT_OBJECT__ is None:
UnboundLocalError: local variable '__IMPORTANT_OBJECT__' referenced before assignment

完成我在这里尝试做的事情的推荐方法是什么?

4

1 回答 1

5

该变量不被认为是私有的;相反,它被视为局部变量。

使用global关键字将其标记为:

def getImportantObject():
    global __IMPORTANT_OBJECT__
    if __IMPORTANT_OBJECT__ is None:
        __IMPORTANT_OBJECT__ = my_other_module.ImportantObject()
    return __IMPORTANT_OBJECT__
于 2012-12-11T17:15:07.673 回答