Skip to main content
 首页 » 编程设计

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

2025年05月04日13emanlee

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

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。