这是一个多项式类
class Polynomial(object):
def __init__(self, polynomial):
self.p = tuple(polynomial)
def get_polynomial(self):
return self.p
def __neg__(self):
return tuple([tuple([-i[j] if j==0 else i[j] for j in range(len(i))])for i in self.p])
def __add__(self, other):
pass
def __sub__(self, other):
pass
def __mul__(self, other):
pass
def __call__(self, x):
pass
def simplify(self):
pass
def __str__(self):
return 'something'
如果我使用下面的代码,则出现-p语法错误的错误。有其他方法可以替代魔术方法吗?
p = Polynomial([(2, 1), (1, 0)])
print p
print p.get_polynomial()
q = ‑p; q.get_polynomial()
我在q = -p
时遇到语法错误答案 0 :(得分:3)
问题在于您的__neg__
方法返回的是tuple
,而不是Polynomial
类的实例。
因此,当您尝试调用get_polynomial
时,它将在tuple
上发生,从而导致错误,指出tuple
没有名为get_polynomial
的方法。
AttributeError:“元组”对象没有属性“ get_polynomial”
因此,您的__neg__
方法必须返回您的Polynomial
类的实例,如下所示:
def __neg__(self):
return Polynomial([tuple([-i[j] if j == 0 else i[j] for j in range(len(i))]) for i in self.p])