假设我有两个不同的模块,它们具有统一的(相同的)接口。文件列表如下:加载不同的模块而不改变逻辑文件
root/
logic.py
sns_api/
__init__.py
facebook/
pyfacebook.py
__init__.py
myspace/
pymyspace.py
__init__.py
而且pyfacebook.py和pymyspace.py具有相同的接口,这意味着:
# in pyfacebook.py
class Facebook:
def __init__(self, a, b):
# do the init
def method1(self, a, b, ...):
# do the logic
# in pymyspace.py
class Myspace:
def __init__(self, a, b):
# do the init
def method1(self, a, b, ...):
# do the logic
现在我有一个问题。我想要做的logic.py逻辑而非复制代码,所以我不知道我怎么可以只设置一个标志,以显示我使用的模块和Python会自动加载正确的代码,这意味着:
# in logic.py
PLATFORM = "facebook"
# import the right modules in, complete the logic with the current platform
# create the right instance and invoke the right methods
然后我改变PLATFORM ='myspace',逻辑会自动工作。
那么我该如何做到这一点?
我想知道是否使用动态导入将工作,或评估原始python代码,但似乎不是一个好的解决方案。或者如果我可以制作一个统一的包装
sns_api/__init__.py
任何人都可以帮忙吗?