統一された(同じ)インターフェースを持つ2つの異なるモジュールがあるとします。ファイルのリストは次のようになります。
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
誰でも助けることができますか?