@Boris19

Как правильно переключаться между разными классами с одним интерфейсом?

У меня есть базовый класс, который описывает какой-то интерфейс. Так же у меня есть два класса, которые наследуются от этого базового класса. Как правильнее сделать выбор между этими двумя классами через указание параметра? Например, я хочу чтобы моя скрипт работал как с потоками, так и с процессами, и выбор можно было бы сделать через командную строку?
Нужно как-то динамически импортировать нужный класс?
  • Вопрос задан
  • 120 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
from abc import ABC
import sys
from threading import Thread
from multiprocessing import Process

class Executor(ABC):
    @abstractmethod
    def execute(self, f):
        pass

class ThreadExecutor(Executor):
    def execute(self, f):
        Thread(target=f).start()

class ProcessExecutor(Executor):
    def execute(self, f):
        Process(target=f).start()

def func():
    print('Hello')

if __name__ == '__main___':
    executor = None
    if sys.argv[1] == 'thread':
        executor = ThreadExecutor()
    elif sys.argv[1] == 'process':
        executor = ProcessExecutor()
    else:
        print('Usage:\n\t{} <thread|process>\n'.format(sys.argv[0]), file=sys.stderr)
        sys.exit(1)

    executor.execute(func)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы