私のアプリケーションは、Python スクリプトを読み取ります。
a = MyObject("a")
b = MyObject("b")
my_objects = [a, b]
次のコードは、ファイルをロードして取得しますmy_objects
(解析エラーの場合の例外は省略されています)。
_config = __import__(file_name)
if hasattr(_config, "my_objects"):
v = getattr(_config, "my_objects")
動作しますが、ファイルの解析中に MyObject が別のオブジェクトにアクセスできるようにします。私が見つけた唯一の方法は、グローバル変数を別の python ( globs.py
) ファイルで宣言して、循環インポート エラーを回避することでした。
_cached_instance
そして、私のオブジェクトのコードは次のとおりです。
import globs
class MyObject(Object):
def __init__(self):
self.cache_instance = globs._cached_instance
それは機能します...しかし、あまりエレガントではありません。グローバル変数を使用すると、テストが難しくなります (奇妙な境界効果が発生します)。Pythonスクリプトのロード中に_cached_instanceを「注入」し、スクリプトでのみ使用できるようにする、よりエレガントな方法を探しています。何か案は ?