Как получить экземпляр модуля для класса в Python?

Я изучаю Python, и, как всегда, я занимаюсь амбициями своих стартовых проектов. Я работаю над плагиновой системой для инструментария сообщества для App Engine. Мой суперкласс-плагин имеет метод под названием install_path. Я хотел бы получить __path__ для __module__ для self (который в этом случае будет подклассом). Проблема в том, что __module__ возвращает a str, а не сам экземпляр модуля. eval() является ненадежным и нежелательным, поэтому мне нужен хороший способ получить реальный экземпляр модуля, который не включает eval ling str Я возвращаюсь из __module__.

Ответ 1

sys.modules dict содержит все импортированные модули, поэтому вы можете использовать:

mod = sys.modules[__module__]

Ответ 2

Как насчет Импорт модулей

X = __import__(‘X’) работает как import X, с той разницей, что вы 1) передать имя модуля в виде строки и 2) явно назначить его переменной в вашем текущем пространстве имен.

Вы можете передать имя модуля (вместо "X" ) и вернуть экземпляр модуля. Python гарантирует, что вы не импортируете один и тот же модуль дважды, поэтому вам нужно вернуть экземпляр, который вы импортировали ранее.

Ответ 3

В качестве альтернативы вы можете использовать модуль global __file__ variable, если все, что вы хотите, это путь к модулю.