我试图创建一个名为PolyExt
的类,它是SymPy中Poly
类的扩展。而且,它有自己的__init__
方法。但问题是,当它通过继承的Poly
类中的__new__
方法时,我添加到__init__
方法的额外参数会被解释为*gens
参数的一部分。有什么优雅的方法吗?你知道吗
下面是如何再现错误:
class PolyExt(Poly):
def __init__(self, expression, symb1, symb2):
self.symb1 = symb1
self.symb2 = symb2
super(PolyExt, self).__init__(expression)
x = symbols('x')
y = symbols('y')
PolyExt(x+y, [y], [x])
而且,Poly
类如下所示:
class Poly(Expr):
"""Generic class for representing polynomial expressions."""
__slots__ = ['rep', 'gens']
is_commutative = True
is_Poly = True
def __new__(cls, rep, *gens, **args):
"""Create a new polynomial instance out of something useful. """
opt = options.build_options(gens, args)
我尝试为symb1
和symb2
使用关键字参数,但同样,Poly
类的__new__
方法会遇到阻碍,请尝试下面的代码
class PolyExt(Poly):
def __init__(self, expression, **kwargs):
self.symb1 = kwargs['symb1']
self.symb2 = kwargs['symb2']
super(PolyExt, self).__init__(expression)
x = symbols('x')
y = symbols('y')
PolyExt(x+y, symb1=[y], symb2=[x])
我能做些什么来解决这个问题?我是否需要编写自己的__new__
方法来重写class PolyExt
中的方法?或者是我错过了什么?你知道吗
谢谢你。你知道吗
您还需要使用
__new__
:相关问题 更多 >
编程相关推荐