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 に答える