此问题在此处已有答案:
(17个答案)
8小时前关门了。
假设我有以下类:
class Elem():
def __init__(self, valAcum=0, data=0, prev=0):
self.valAcum = valAcum
self.data = data
self.prev = prev
然后,我做了以下几点:
D = [Elem()] * 3
D[0].data = 3
print(D)
# [(0, 3, 0), (0, 3, 0), (0, 3, 0)]
发生了什么?执行D[i].f = x
会在来自D的every元素中设置f = x
。为什么会发生这种情况?如何避免?
1条答案
按热度按时间plicqrtu1#
您的列表有三个引用同一个
Elem
对象。当您修改它时,更改将通过所有这些引用可见,因为它们都引用同一个对象。相反,您应该创建三个不同的对象。例如: