gpt4 book ai didi

python - 为什么类会发生这种情况

转载 作者:太空宇宙 更新时间:2023-11-04 06:55:52 25 4
gpt4 key购买 nike

我编写了以下类,它执行以下操作:

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

关于python - 为什么类会发生这种情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19708255/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com