Если бы я хотел получить текущий модуль, например. перезагрузить его, я хотел бы сделать:Получить текущий объект модуля python (по имени или по-другому)
import sys
sys.modules[__name__]
Есть ли лучший способ сделать это (например, не связанный с __name__
)? Лучше в этом контексте означает больше идиоматических, более портативных, более надежных или более ... любых других вещей, которые мы обычно желаем в нашем программном обеспечении.
Я использую python 2, но ответы для python 3, без сомнения, будут полезны другим.
Нет, 'sys.modules [__ name __]' is * точно * right. –
Возможно, вы захотите прочитать [PEP 395] (http://www.python.org/dev/peps/pep-0395/), в котором описаны все известные ловушки/проблемы с '__name__', и объясняется, почему нет лучших альтернатив, которые могут избежать любого из них на Python, как сегодня (3.4 - и, конечно же, это даже больше) для 2.7). (Несмотря на название, он предложил несколько связанных изменений, а не просто добавление '__qualname__', как специальный метапат, чтобы сделать' __main__', а действительное имя модуля эквивалентно.) – abarnert
@abarnert Удивительный, очень информативный. – Marcin