我的问题是这个附加是通过引用发生的,我不知道如何将 newdata 初始化到新的内存空间。
如果您尝试按值将对象附加到列表中,则可能需要使用copy.copy 或 copy.deepcopy 之类的东西来确保复制附加的内容。
>>> # The Problem
>>> class ComplexObject:
... def __init__(self, herp, derp):
... self.herp = herp
... self.derp = derp
...
>>> obj = ComplexObject(1, 2)
>>> list = []
>>> list.append(obj)
>>> obj.derp = 5
>>> list[0].derp
5
>>> # obj and list[0] are the same thing in memory
>>> obj
<__main__.ComplexObject instance at 0x0000000002243D48>
>>> list[0]
<__main__.ComplexObject instance at 0x0000000002243D48>
>>> # The solution
>>> from copy import deepcopy
>>> list = []
>>> obj = ComplexObject(1,2)
>>> list.append(deepcopy(obj))
>>> obj.derp = 5
>>> list[0].derp
2
>>> obj
<__main__.ComplexObject instance at 0x0000000002243D48>
>>> list[0]
<__main__.ComplexObject instance at 0x000000000224ED88>
这是我在没有看到任何代码的情况下从您的描述中实际解决您的问题的尝试。如果您对 Python 中的分配/构造函数更感兴趣,请参阅另一个答案。