我正在用Python学习类,我创建了一个名为polymonic的类,并试图添加两个多项式,但总是得到以下错误消息
soma.termos[i] = self[i] + other[i] TypeError: 'Polinomio' object does not support indexing to fix
为了解决这个问题,我创建了一个与向量大小相等的属性,并创建了一个大小为n的零向量,但是,错误仍然存在,出了什么问题?在
class Polinomio:
def __init__ (self, termos = [], n = 0):
self.termos = termos
self.n = [0] * n
def __len__ (self):
return len(self.termos)
def __setitem__ (self, i, x):
self.termos[i] = x
def __add__ (self, other):
soma = Polinomio(n = len(self.termos))
for i in range(len(self.termos)):
soma.termos[i] = self[i] + other[i]
def print (self):
print(self.termos)
p1 = Polinomio([1, 2, 3])
p2 = Polinomio([1, 2, 3])
p2.print()
p3 = Polinomio()
p3 = p1 + p2
添加时没有使用内部的
termos
属性,而是尝试索引整个实例,这无疑会引发错误。尝试将__add__
方法更改为:甚至更好:
^{pr2}$另外,不要在您的
__init__
签名中初始化termos
列表,因为它将始终引用同一个列表。相反,将其声明为None
,并在未通过时将其构建为新的,即:您应该添加一个方法
__getitem__
:同样在你的
__add__
函数中,你通过说n = len(self.termos)
来实例化一个Polinomio
,但是你使用了一个叫做关键字参数的东西,所以它实际上不会将一个n
实例化为len(self.termos
,你应该改为说Polinomio([], len(self.termos)
,或者实现关键字参数,如果你想用这个语法来表示它。相关问题 更多 >
编程相关推荐