Я знаю, что это не звучит 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()
РЕДАКТИРОВАТЬ: Пример кода включен.