Динамическое переключение между классами, которые содержат похожие функции

#python #python-3.x #abstract-class #multiple-inheritance

#python #python-3.x #абстрактный класс #множественное наследование

Вопрос:

У меня есть базовый абстрактный класс и 2 дочерних класса (Reader_a и Writer_a) . У меня есть другой набор классов (reader_b,writer_b), которые наследуются от того же базового класса. writer_a writer_b и reader_a и reader_b служат одной и той же цели, но обрабатывают разные типы изображений, в основном у них разные серверные части. Есть ли в python какая-либо функциональность, с помощью которой я могу переключать эти классы на основе того, какой тип изображения вводит пользователь?

Комментарии:

1. Вы инициализируете экземпляр до или после ввода изображения?

Ответ №1:

Я бы добавил два заводских (статических) метода к базовому классу, которые проверяли бы тип и соответственно создавали бы правильный дочерний класс.

 class Base:
    @staticmethod
    def create_reader(image):
        if image == 'A':
            return Reader_a()
        elif image == 'B':
            return Reader_b()
        else:
            raise Exception('Unknown image')

    @staticmethod
    def create_writer(image):
        if image == 'A':
            return Writer_a()
        elif image == 'B':
            return Writer_b()
        else:
            raise Exception('Unknown image')