Как я могу получить ссылку на модуль из этого модуля? Кроме того, как я могу получить ссылку на пакет, содержащий этот модуль?
Как получить ссылку на модуль внутри самого модуля?
Ответ 1
import sys
current_module = sys.modules[__name__]
Ответ 2
Если у вас есть класс в этом модуле, то свойство __module__
этого класса является именем модуля класса. Таким образом, вы можете получить доступ к модулю через sys.modules[klass.__module__]
. Это также работает для функций.
Ответ 3
Вы можете получить имя текущего модуля, используя __name__
Ссылка на модуль можно найти в словаре sys.modules
.
См. документацию Python
Ответ 4
Еще одна техника, которая не импортирует модуль sys и, возможно, зависит от вашего вкуса - проще:
current_module = __import__(__name__)
Имейте в виду, что импорт отсутствует. Python импортирует каждый модуль только один раз.
Ответ 5
Вы можете передать его снаружи:
mymod.init(mymod)
Не идеально, но он работает для моего текущего случая использования.