#python-3.x
#python-3.x
Вопрос:
Я пишу пакет, который управляет прошивкой наших устройств. Пакет переносит вызовы функций в общую библиотеку (Linux и Windows). Пакеты содержат множество модулей, которые инкапсулируют функции из оболочки разделяемой библиотеки. Пакет будет использоваться внутри компании и, возможно, клиентами.
Чтобы ускорить разработку, нам нужно создать макет оболочки, который эмулирует вызовы общей библиотеки. Вот пример структуры:
import device_wrapper
import Module_A, ... Module_Z
class Device_0:
def __init__(self):
self.sub_device_0 = Module_A
self.sub_device_n = Module_Z
Каждый модуль импортирует разные функции из оболочки. Пользователи могут использовать любые модули, а также классы «Devices».
Теперь я ищу способ использовать любые модули пакета, импортируя макет оболочки в некоторых случаях и импортируя реальную оболочку в других случаях. Что-то вроде:
if mock_enable:
import mock as device_wrapper
else:
import device_wrapper
import Module_A, ... Module_Z
class Device_0:
def __init__(self):
self.sub_device_0 = Module_A
self.sub_device_n = Module_Z
Где mock_enable будет импортироваться всеми другими модулями и будет модулем, который управляет импортом.
Есть ли лучший способ сделать то, что я хочу сделать? Я упускаю какие-либо подводные камни?
Комментарии:
1. Я просмотрел другие сообщения, думая о встроенных , глобальных переменных, но я не был уверен, что мне следует идти по этому пути.
2. Похоже, это стандартная вещь. Но убедитесь, что
mock_enable
он правильно инициализирован, прежде чем любой другой модуль импортирует его.