Я всего лишь яйцо. , , , Возможно, это очевидно для новичков, но мне нужна была идиома from some.package.module import module
.
Мне пришлось изменить один метод GenerallyHelpfulClass. Это не удалось:
import some.package.module
class SpeciallyHelpfulClass(some.package.module.GenerallyHelpfulClass):
def general_method(self):...
some.package.module.GenerallyHelpfulClass = SpeciallyHelpfulClass
Код выполнялся, но не использовал поведения, перегруженные на SpecialHelpfulClass.
Это сработало:
from some.package import module
class SpeciallyHelpfulClass(module.GenerallyHelpfulClass):
def general_method(self):...
module.GenerallyHelpfulClass = SpeciallyHelpfulClass
Я предполагаю, что идиома from ... import
«получает модуль», как писал Алекс, так как он будет подхвачен другими модулями в пакете. Далее, более длинная пунктирная ссылка, кажется, переносит модуль в пространство имен с импортом по длинной пунктирной ссылке, но не меняет модуль, используемый другими пространствами имен. Таким образом, изменения в модуле импорта будут появляться только в том пространстве имен, где они были сделаны. Это как если бы было две копии одного и того же модуля, каждый из которых доступен по несколько разным ссылкам.