То, что я пытаюсь сделать, в командной строке будет выглядеть так:
>>> import mymodule
>>> names = dir(mymodule)
Как я могу получить ссылку на все имена, определенные mymodule
внутри mymodule
себя?
Что-то вроде этого:
# mymodule.py
names = dir(__thismodule__)
Ответы:
Просто используйте globals ()
http://docs.python.org/library/functions.html#globals
источник
Как упоминалось ранее, globals дает вам словарь, в отличие от dir (), который дает вам список имен, определенных в модуле. Обычно я это вижу так:
источник
sys.modules[__name__].__doc__
.operators.attrgetter('module.attribute')(sys.modules[__name__])
- вы знаете, если вы делаете сумасшедшие вещи, люди говорят вам не делать, например, динамически импортировать пакеты из строк, а затем обезьяна исправляет их, не находясь в классе или что-то в этомsys.modules[__name__].__doc__
==,__doc__
поскольку он определен в текущем пространстве имен. Поэтому выборка объекта модуля для доступа к его собственным атрибутам не требуется.Может быть, поздно отвечать, но я не нашел для себя правильного ответа. Самое близкое и точное решение (быстрее, чем
inspect.stack()
) на питоне3.7.x
:Плюсы :
globals()
метода.pytest
:Минусы:
pytest.exe
Что-то вроде очень точного и может возвращать модули, зарегистрированные в исполняемом файле, например, для того, что может не то, что вы хотите.inspect.getmodule
все еще может возвращать None на допустимых модулях в зависимости от подключенияУ меня есть расширение для Python: как импортировать модуль с полным путем?
Расширение, имеющее функции оболочки для этого случая:
Вам нужно просто правильно инициализировать расширение:
источник