Как получить объект из файла, который импортировал другой файл?

#python #python-3.x #import #python-import

Вопрос:

Допустим, у меня есть файл python fileOne.py , который называется «Импорт fileTwo.py «. Есть ли способ fileTwo.py динамического доступа к объектам fileOne.py ? Поэтому fileTwo.py вам не нужно знать имя файла, который будет импортировать его, и вместо этого вы можете сделать что-то вроде этого: FILE_THAT_IMPORTED_ME.myFunction() .

В основном я хочу знать, есть ли способ доступа к объектам из «родительского» файла, который импортирует сценарий из указанного сценария.

Комментарии:

1. Пожалуйста, предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.

Ответ №1:

Вы можете получить доступ к файлу, который вы импортировали, выполнив import __main__ это, и __main__ он будет содержать родительский модуль.

a.py#

 import b
print(b)
 

b.py#

 import __main__
print(__main__)
 

Выполнение a.py приведет к

 <module '__main__' from '/home/jonatan/PycharmProjects/tests/test/a.py'>
<module 'b' from '/home/jonatan/PycharmProjects/tests/test/b.py'>
 

Обратите внимание, что __main__ это печатается раньше b , так как модуль b должен завершить загрузку, прежде чем продолжить файл a .