我正在一类多项式的物体,由词典表示:为什么我的实例正在改变?
3 * X^2 + X + 2 == {2:3,1:1,0:2}
这是我的代码的一部分是相关的问题:
class Sparse_polynomial():
def __init__(self, coeffs_dict):
self.coeffs_dict = coeffs_dict
def __repr__(self):
terms = [" + ("+str(self.coeffs_dict[k])+"*x^" + str(k)+")" \
for k in sorted(self.coeffs_dict.keys(), reverse=True)]
terms = "".join(terms)
return terms[3:]
def __neg__(self):
neg_pol= self.coeffs_dict
for key in self.coeffs_dict:
neg_pol[key]= -self.coeffs_dict[key]
return Sparse_polynomial(neg_pol)
每当我尝试使用__neg__
方法,原始对象的变化。例如:
>>> p1= Sparse_polynomial({1:3,5:1})
>>> p1
(1*x^5) + (3*x^1)
>>> -p1
(-1*x^5) + (-3*x^1)
>>> p1
(-1*x^5) + (-3*x^1)
>>>
我真的不明白为什么原来的p1
改变了。我没有直接修改它,只访问了它的字段。
任何人都可以澄清,所以我可以解决这个问题吗?
new_dict =字典(old_dict)将复制给你,你要一个副本不能引用 – Rosh