Нет необходимости создавать модуль.Ни один код Python не заботится о том, действительно ли somemodule.simplevalue
является ссылкой на атрибут модуля.Для этого программе необходимо проверить тип somemodule
.Зачем беспокоиться?
Поскольку вы просто хотите получить одно значение из модуля и импортировать его в свое собственное пространство имен, просто определите его:
simplevalue = 42
Если хотите, используйте try/except
дляпопробуйте сначала импортировать реальный модуль.
try:
from somemodule import simplevalue
except ImportError:
simplevalue = 42
Если вы импортируете весь модуль, но используете только одно значение, вы можете использовать класс для определения пространства имен.
try:
import somemodule
except ImportError:
class somemodule(object):
simplevalue = 42
Теперьsomemodule.simplevalue
относится к значению независимо от того, доступен ли модуль.
Если вы хотите, чтобы другие модули, которые также импортируют somemodule
, увидели ваш поддельный класс как модуль, как в вашем устройстветест, просто сделай это потом:
import sys
sys.modules["somemodule"] = somemodule