У меня есть следующий интерфейс:
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), чтобы узнать, реализует ли определенный класс мой интерфейс процесса.
- самоанализ для получения класса, который находится в моем модуле.
- импорт модулей во время выполнения
IЯ просто не уверен, как это сделать.Мне удается использовать issubclass внутри модуля.Но я не могу использовать issubclass, если я вне модуля.
Мне нужно:
- получить список всех модулей в каталоге
- получить класс в каждом модуле
- сделать issubclass на каждомclass
Мне понадобится черновик функции, которая могла бы сделать это.