假設我有兩個不同的模塊,它們具有統一的(相同的)接口。文件列表如下:加載不同的模塊而不改變邏輯文件
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
任何人都可以幫忙嗎?