我知道这听起来不像 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()
编辑:包括示例代码。