所以我很难弄清楚类是如何工作的。基本上,我将两个多项式(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
答案 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]