Я хочу импортировать определенные элементы из модуля - только те, которые необходимы, а не все элементы этого модуля, но хотят сохранить пространство имен модуля, то есть сохранить имя модуля как «префикс» для доступа эти предметы. Другими словами, лучше всего использовать конструкции import module
и from module import item
.Импорт отдельных объектов с помощью пространства имен
Есть ли более простая/лучшая конструкция для этого, вместо того чтобы делать следующее (что много кода, выглядит несколько неуклюжим и все еще оставляет ненужные символы в глобальном пространстве имен)?
from types import ModuleType
from myModule import Item1, Item2
myModule = ModuleType("myModule")
myModule.Item1 = Item1
myModule.Item2 = Item2
Что вы видите, как в пользу этого? Все имена загружаются в любом случае. – jonrsharpe
Вы имеете в виду только импорт предметов, которые необходимы, вместо того, чтобы делать «импорт myModule»? На мой взгляд, лучше явно указать свои зависимости. Хотя модуль может быть загружен полностью, при использовании конструкции «from» в этом контексте можно использовать только выбранные элементы. –
Я имею в виду, что вы делаете что-то, что заставит всех остальных читать ваш код. «Почему вы это делаете?» * Учитывая, что каждый модуль загружается один раз, полностью, и что вы можете выбрать, чтобы весь модуль был доступен или выбрать имена, которые будут доступны напрямую (или и то и другое), в чем смысл этого промежуточного дома, где ваше намерение (* «Я импортирую' foo', но я буду использовать 'foo.bar' *), ясно видно из чтения код в любом случае? – jonrsharpe