#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')