Python子类

7

我目前有一个名为Polynomial的类,初始化如下:

def __init__(self, *termpairs):
    self.termdict = dict(termpairs) 

我正在通过将键作为指数,相关值作为系数来创建多项式。要创建此类的实例,您可以按以下方式输入:

d1 = Polynomial((5,1), (3,-4), (2,10))

生成一个类似于字典的数据结构,如下所示:
{2: 10, 3: -4, 5: 1}

现在,我想创建一个名为Quadratic的Polynomial类子类,我想在Quadratic类构造函数中调用Polynomial类构造函数,但是我不太确定如何做到这一点。我尝试过以下方法:

class Quadratic(Polynomial):
def __init__(self, quadratic, linear, constant):
    Polynomial.__init__(self, quadratic[2], linear[1], constant[0])

但我一直遇到错误,有没有什么小技巧?当我调用多项式类构造函数时,感觉自己使用了不正确的参数。

2个回答

15

你还应该使用 super() 而不是直接使用构造函数。

class Quadratic(Polynomial):
    def __init__(self, quadratic, linear, constant):
       super(Quadratic, self).__init__(quadratic[2], linear[1], constant[0])

1
你能详细说明为什么这样做更好吗? - kelorek
1
明白了。请查看此帖子以获取更多信息:https://dev59.com/zXRB5IYBdhLWcg3wl4Oc - kelorek

11

你可能想要

class Quadratic(Polynomial):
    def __init__(self, quadratic, linear, constant):
        Polynomial.__init__(self, (2, quadratic), (1, linear), (0, constant))

谢谢,这个起作用了,我只是把数字放错位置了。 - me45

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接