在包含相似功能的类之间动态切换

问题描述

我有一个基本抽象类和2个子类(Reader_a和Writer_a)。我有另一组类(reader_b,writer_b),它们从相同的基类继承。 writer_a writer_b和reader_a和reader_b的用途相同,但处理的图像类型不同,基本上它们的后端不同。 python中有什么功能可以根据用户输入的图像类型切换这些类?

解决方法

我会在基类中添加两个工厂(静态)方法,这些方法将检查类型并相应地创建正确的子类。

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