Пространство имен модуля Python доступно для записи.Обратите внимание:
# contrived.py
CONST = 100
def foo():
return CONST
Вы можете изменить значение CONST
после его импорта:
import contrived
contrived.CONST = 200
contrived.foo() # 200
Однако, только один экземпляр модуля может быть импортирован, поэтому нетВ любом случае создать клон и продолжить использовать оригинальный модуль.Если вам не нужен доступ к исходному модулю, то довольно просто создать модуль-обертку и переопределить все, что вы хотите изменить.
Одна вещь, на которую стоит обратить внимание, это то, что подобный код не будетработать как вы ожидаете:
# clone.py
from contrived import *
CONST = 200
Это фактически назначит CONST
в пространстве имен clone
, функции, импортированные из contrived
, будут продолжать ссылаться на CONST
в пространстве имен contrive
:
import clone
clone.foo() # 100
В этом случае вы можете сделать что-то вроде этого:
# clone.py
import contrived
contrived.CONST = 200
from contrived import *