擅长:python、mysql、java
<p>因为list在python中是可变对象,所以当您创建一个对象时,引用在场景后面是相同的,所以您需要调用list.copy(),它将创建一个具有不同引用的副本,那么您的更改将不会反映在原始副本中</p>
<pre><code>first_list = {"a":1, "b":[2,3,4]}
second_list = first_list
second_list["b"].append(34)
print("first one: ", first_list)
print("second one: ", second_list)
</code></pre>
<p>输出:</p>
<pre><code> first one: {'a': 1, 'b': [2, 3, 4, 34]}
second one: {'a': 1, 'b': [2, 3, 4, 34]}
</code></pre>
<p>因此,最好使用copy函数:second_list=first_list.copy()来避免对原始列表的更改</p>
<p>根据您的情况包括更多内容您还需要在更改对象之前创建副本:</p>
<pre><code>import copy
class Knight(object):
def __init__(self, traits):
for k, v in traits.items():
self.__setattr__(k, copy.deepcopy(v))
traitfile = json.load(open(input(), 'r'))
</code></pre>
<p>以下是供参考的链接:<a href="https://towardsdatascience.com/https-towardsdatascience-com-python-basics-mutable-vs-immutable-objects-829a0cb1530a" rel="nofollow noreferrer">Mutable and Immutable datatypes</a></p>