在python中,在类中,当我将“self”变量保存到另一个变量中时,如果我编辑新变量,则“self”也会被编辑:
undropped_lines = self.flagged_lines
print self.flagged_lines
del undropped_lines[0]
print self.flagged_lines
如何在代码中避免这种特性?
答案 0 :(得分:4)
这是因为列表是可变的,当您说undropped_lines = self.flagged_lines
时,您只是在同一个实例上指出一个新名称。
如果您想要使用undropped_lines = self.flagged_lines[:]
答案 1 :(得分:3)
这是因为undropped_lines
和self.flagged_lines
指向相同的数据。可以把它想象成指向同一实体的两个不同的“名称”。
您可以通过在分配到undropped_lines
时创建列表的浅表副本来解决此问题。类似的东西:
undropped_lines = list( self.flagged_lines )