我喜欢
这样的课程class Gate():
def __init__(self, lst):
self.arr = lst
self.fill()
def get_arr(self):
return self.arr
def set_arr(self, index1, index2, value):
self.arr[index1][index2] = value
def fill(self):
for i in range(len(self.arr)):
self.arr[i].append(randrange(2))
我正在使用“gate_list”attiribute创建课程。创建新对象时,它会将1和0添加到对象列表中。
直到现在,每件事都很好。但是对于对象的列表,我的“gate_list”变量也在变化。
Array = Gate(gate_list)
print(Array.get_arr())
print(gate_list)
输出
[['a', 1], ['b', 0], ['c', 0], ['z', 1], ['d', 1]]
[['a', 1], ['b', 0], ['c', 0], ['z', 1], ['d', 1]]
我的错在哪里?
答案 0 :(得分:1)
self.arr
引用了gate_list
,它被传递给构造函数。因此,self.arr
的任何突变也将改变gate_list
。而是将gate_list
的副本传递给Gate
:
import copy
Array = Gate(copy.deepcopy(gate_list))