我有一个像这样的包结构
mypackage
|-- core.py
|-- device.py
|-- async.py
|-- ...
core.py
定义了一个Command
类,用于处理与设备的通信。
通信是同步的(阻塞)。
#core.py
class Command(object):
#...
设备模块定义了一个设备类,它使用Command
类为真实设备提供API,例如:示波器。
# device.py
class MyDevice(object):
cmd1 = Command(...)
cmd2 = Command(...)
异步模块定义了Command
的异步版本。
# async.py
class Command(object):
# asyncronous command implementation
现在我想要的是以下内容:
# Note: There is no real /mypackage/async/device.py file
import mypackage.async.device
dev = mypackage.async.device.MyDevice(...) # uses asyncronous Command implementation
有许多类,如MyDevice
。我不想仅仅为了切换Command
实现来重写它们中的每一个。这就是为什么我认为修补工作会很好。但它也应该是明确的(不同的导入,用户不应该知道修补已经完成)。
我有什么建议可以实现这个目标吗?