В Python, как я могу получить доступ к пространству имен основного модуля из импортированного модуля?

В частности, мне нужно получить некоторые объекты и глобальные переменные из основного модуля в импортированном модуле. Я знаю, как найти эти вещи, когда родительский модуль хочет какую-то конкретную вещь от дочернего модуля, но я не могу понять, как двигаться в другом направлении.

4 ответа

import __main__

Но не делай этого.

Ответ, который вы ищете:

import __main__

main_global1= __main__.global1

Однако всякий раз, когда модуль module1 нужны вещи из __main__ модуль, то:

  • либо __main__ модуль должен предоставить все необходимые данные в качестве параметров module1 функция / класс,
  • или вы должны поместить все, что нужно для совместного использования в другой модуль, и импортировать его как import module2 в обоих __main__ а также module1,

Я думаю, что это будет работать:

import sys    
main_mod = sys.modules['__main__']

Не уверен, что это хорошая практика, но, возможно, вы могли бы передать нужные вам объекты и переменные в качестве параметров методам или классам, которые вы вызываете в импортированном модуле.

Другие вопросы по тегам