Python-将两个列表导入一个类并使用运算符重载将其添加

时间:2018-12-14 01:57:48

标签: python

所以我很难弄清楚类是如何工作的。基本上,我将两个多项式(3x ^ 2 + 2x + 8)和(8x ^ 2-4x-2)转换为列表-[3,2,8]&[8,-4,-2],我想使用运算符重载以通过类将它们添加到gether中。我需要做的就是将这两个列表导入到我的类中,然后返回要在程序的不同部分中使用的总和[11,-2,6]。这是到目前为止我得到的,但是我对上课还是很陌生的,不知道我在做什么。我尝试查找方法,但在此过程中感到非常困惑。

class Polynomial:
    def __init__(self, poly1List, poly2List):
        self.poly1List = poly1List
        self.poly2List = poly2List
    def __add__(self, poly1List, poly2List):
        return finalPolyList( self.poly1List + self.poly2List)

那我想做

finalPolyList = poly1List + poly2List

2 个答案:

答案 0 :(得分:3)

看起来您想要一个重载+的Polynomial类,因此,除非Polynomial是某种容器,否则不清楚构造函数为什么要使用两个列表。

这是一种仅用一个类重载__add__的简单方法:

class Polynomial:
    def __init__(self, polylist):
        self.list = polylist
    def __add__(self, other):
        return Polynomial([x + y for x, y in zip(self.list, other.list)])
    def __repr__(self):
        return f"{self.__class__.__name__}({self.list})"

p1 = Polynomial([3, 2, 8])
p2 = Polynomial([8, -4, -2])

p3 = p1 + p2 # Polynomial ([11, -2, 6])

那是你的追随吗?

答案 1 :(得分:1)

使用list作为元类,使其更容易和更短:

class Polynomial(list):
    def __add__(self, other):
        return Polynomial(list(map(sum,zip(self,other))))

示例调用:

poly1List=Polynomial([3, 2, 8])
poly2List=Polynomial([8, -4, -2])
finalPolyList = poly1List+poly2List

或者:

poly1List=Polynomial([3, 2, 8])
poly2List=[8, -4, -2]
finalPolyList = poly1List+poly2List

两种情况:

print(finalPolyList)

是:

[11, -2, 6]