我的变量正在改变,类作为属性给予类

时间:2017-12-18 23:57:34

标签: python oop object

我喜欢

这样的课程
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]]

我的错在哪里?

1 个答案:

答案 0 :(得分:1)

self.arr引用了gate_list,它被传递给构造函数。因此,self.arr的任何突变也将改变gate_list。而是将gate_list的副本传递给Gate

import copy

Array = Gate(copy.deepcopy(gate_list))