包有条件导入

时间:2019-04-17 12:30:25

标签: 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

每个模块从包装器导入不同的功能。用户可以使用任何模块以及“设备”类。

现在,我正在寻找一种使用包中所有模块的方法,同时在某些情况下导入模拟包装,而在其他情况下导入真实包装。 类似于:

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将由所有其他模块导入,并且将是管理导入的模块。

是否有更好的方法来做我想做的事? 我是否有任何陷阱?

0 个答案:

没有答案