Python泛型:如何创建适当类的对象?

Python泛型:如何创建适当类的对象?,python,oop,Python,Oop,我有以下代码(此代码仅用于测试): 输入import-TypeVar、Generic、Type 进口abc 类基乘数(abc.abc): @抽象方法 def倍增(自身,n): 通过 类乘法器2(基本乘法器): def倍增(自身,n): 返回n*2 类乘法器乘以三(基本乘法器): def倍增(自身,n): 返回n*3 乘数=TypeVar('Multiplier',类型[MultiplierByTwo],类型[MultiplierByThree]) 类乘数创建者(通用[乘数]): def创建(自我

我有以下代码(此代码仅用于测试):

输入import-TypeVar、Generic、Type
进口abc
类基乘数(abc.abc):
@抽象方法
def倍增(自身,n):
通过
类乘法器2(基本乘法器):
def倍增(自身,n):
返回n*2
类乘法器乘以三(基本乘法器):
def倍增(自身,n):
返回n*3
乘数=TypeVar('Multiplier',类型[MultiplierByTwo],类型[MultiplierByThree])
类乘数创建者(通用[乘数]):
def创建(自我)->倍增:
#我需要在这里创建一个乘数的实例
通过
类MultiplierByTwoCreator(MultiplierCreator[MultiplierByTwo]):
通过
类MultiplierByThreeCreator(MultiplierCreator[MultiplierByThree]):
通过
那么如何在
create
方法中创建适当的
Multiplier
类的实例呢? 因此,以下代码不得引发任何异常:

creator\u by\u two=multiplerbytowcreator()
断言类型(creator\u by\u two.create())==multiplerbytwo
creator\u by\u three=乘法器bythreecreator()
断言类型(creator\u by\u three.create())==multiperbythree
提前谢谢

class MultiplierCreator(Generic[Multiplier]):
    def create(self) -> Multiplier:
        return self.multiplier()


class MultiplierByTwoCreator(MultiplierCreator[MultiplierByTwo]):
    multiplier = MultiplierByTwo


class MultiplierByThreeCreator(MultiplierCreator[MultiplierByThree]):
    multiplier = MultiplierByThree
通过将类属性添加到包含相关的
MultiplierCreator
子类的
MultiplierCreator
子类中,然后可以使用继承的方法
create()
调用此类属性并返回其实例。希望这就是你要找的

除此之外,要检查对象的类型是否正确,您可能需要使用
isinstance()


希望这能对您有所帮助。

是的,现在我使用一个包含适当类的属性。但我认为使用泛型可以让我摆脱在每个子类中重新定义方法的麻烦。
assert isinstance(creator_by_two.create(), MultiplierByTwo)
assert isinstance(creator_by_three.create(), MultiplierByThree)