我编写了以下类,它执行以下操作:
class abc:
def __init__(self):
self.Values = []
def add_code(self):
lastval = self.Values
print "self.Values , ", self.Values
print "lastval , ", lastval
lastval.append(1)
print "self.Values 1, ", self.Values
print "lastval 1 , ", lastval
lastval.append(2)
print "lastval 2 , ", lastval
print "self.Values 2 , ", self.Values
lastval.append(3)
print "lastval 3 , ", lastval
print "self.Values 3 , ", self.Values
lastval.append(4)
print "last val 4 ", lastval
print "self.Values 4 , ", self.Values
lastval = []
print "last value is emtpy now? , ", lastval
print "But the self.Values is not", self.Values
return lastval
当我运行这段代码时,我看到变量 lastval 附加了值,self.Values 也是如此 但是当我用空列表初始化 lastval 时,我仍然看到 self.Values 保留值。 可能是什么原因
请您参考如下方法:
你为什么会有其他想法?首先,您将 lastval 指定为指向与 self.Values 相同的列表,因此对一个的突变将在另一个中看到。但是,当您执行 lastval = [] 时,您只需将 lastval 重新绑定(bind)到一个新列表,您根本不会影响 self.Values。
