これが Pythonic に聞こえないことは承知していますが、少々お待ちください。
外部のクローズド ソース モジュールに依存するモジュールを作成しています。そのモジュールを使用するにはインスタンス化する必要があります (module.create() を使用)。
私のモジュールは、ユーザーがそのモジュールを既にロードしているかどうかを調べようとしますが (簡単に実行できます)、モジュールがインスタンス化されているかどうかを調べる必要があります。各変数の type() をチェックアウトするとこれがわかることは理解していますが、メイン プログラムで定義された変数の名前を取得する方法がわかりません。この理由は、モデルをインスタンス化するときに、何らかの理由で上書きしたくない一連のパラメーターも設定されるためです。
これまでの私の試みには、sys._getframe().f_globals の使用と要素の反復処理が含まれていましたが、私のテストではうまくいきませんでした。モジュールを modInst としてインスタンス化し、モジュールで関数を呼び出すと、modInst 変数が表示されません。これに対する別の解決策はありますか?以下にサンプルコードを示します。
import sys
if moduleName not in sys.modules:
import moduleName
modInst = moduleName.create()
else:
globalVars = sys._getframe().f_globals
for key, value in globalVars:
if value == "Module Name Instance":
return key
return moduleName.create()
EDIT:サンプルコードが含まれています。