当使用某些参数调用超类时,我试图强制使用更专业的类。具体来说,我有一个Monomial类(它__init__需要coefficient 和power)和一个Constant类。我希望每当Monomial调用 with 时power=0,Constant都会返回一个实例。
这些类的目的是构建一个生成“随机”数学函数的框架。
我最初拥有的:
class Monomial(Function):
def __init__(self, coef: int, power: int, inner=Identity()):
super().__init__(inner)
self.pow = power
self.coef = coef
class Constant(Monomial):
def __init__(self, c: int):
super().__init__(c, 0)
我尝试添加以下__new__方法:
class Monomial(Function):
def __new__(cls, coef: int, power: int, inner=Identity()):
if power == 0:
return Constant(coef)
instance = object.__new__(Monomial)
instance.__init__(coef, power, inner)
return instance
问题是,现在每当Constant创建一个 new 时,都会调用Monomial's__new__方法(带有不匹配的签名)。
这样做的最佳方法是什么?
杨魅力
aluckdog
相关分类