0
我想找到一种自然机制来实现看起来像'编译时间'在同一接口的各种实现之间切换(同样的'鸭式')。使用模块别名在各种实现之间切换
假设我有两个类与一些工厂功能:
class Number1(object)
...
def fromBytes(byteArray):
...
class Number2(object)
...
def fromBytes(byteArray):
...
分别在
Number1.py
和
Number2.py
定义
,它实现了相同的功能。我想编写与以下import
语句启动客户端代码:
import Number
在我的Number.py
模块仅仅是其中执行的选择(之间说Number1
Number2
制成)的文件。我最初是想与Number.py
和
import Number1 as Number
在我的客户端代码。不过,我希望我的项目实施选项可以在我的项目的单个位置中指定,而不是在多个客户端模块中复制该选项。
我想定义Number.py
如下:
# choose your implementation here
import Number1
Number = Number1
然而,这种解决方案迫使我有我的客户端模块入手:
from Number import Number
看起来并不好。我喜欢有一个简单的import Number
,然后打电话给我的工厂功能Number.ZERO
,Number.fromBytes(...)
例如...什么是pythonic方式来做到这一点?
完美谢谢!我会尽快接受答案 –