私は次のインターフェースを持っています:
class Interface(object):
__metaclass__ = abc.ABCMeta
@abc.abstractmethod
def run(self):
"""Run the process."""
return
すべて同じディレクトリにあるモジュールのコレクションがあります。各モジュールには、私のインターフェースを実装する単一のクラスが含まれています。
たとえば、 Launch.py :
class Launch(Interface):
def run(self):
pass
20 個のクラスを実装する 20 個のモジュールがあるとします。一部のクラスがインターフェイスを実装していないかどうかをチェックするモジュールを起動できるようにしたいと考えています。
私は使用しなければならないことを知っています:
- issubclass(Launch, ProcessInterface) を使用して、特定のクラスがプロセス インターフェイスを実装しているかどうかを確認します。
- 私のモジュールにあるクラスを取得するためのイントロスペクション。
- 実行時にモジュールをインポートする
どうすればいいのかわかりません。モジュール内で issubclass を使用することができます。しかし、モジュールの外にいる場合は issubclass を使用できません。
する必要がある :
- ディレクトリ内のすべてのモジュールのリストを取得します
- 各モジュールでクラスを取得する
- 各クラスで issubclass を実行します
それを行うことができる関数のドラフトが必要です。