Python:如何从 class 中的实例解除绑定变量?

Python: How to I unbind a variable from instance in a class?

在class中,假设我有一个实例

self.my_instance=6

然后,在一个方法中,说我有类似的东西

my_variable=self.my_instance

每次我将 my_variable 更改为其他值时,self.my_instance 也会更改其值,这不是我想要的。我想在不影响 self.my_instance 的情况下修改 my_variable。这在大型程序中也可能非常令人沮丧和困惑。

谢谢!

当您说 my_variable = self.myinstance 时,my_variable 现在只是 self.myinstance 所指对象的别名。要使其成为一个单独的对象,可以使用切片:

my_variable = self.myinstance[:]

self.myinstance[:]表示把所有的对象从头到尾都取,也就是全部。但是,由于它是一个切片,因此它 returns 是一个副本,因此这是获取列表副本的常用方法。

这适用于你的情况,因为 my_variable 是一个列表,但如果它是一个字典,例如,你可以使用 copy 模块:

import copy

my_variable = copy.copy(self.myinstance) # Shallow copy

my_variable = copy.deepcopy(self.myinstance) # Deep copy

字典也有浅拷贝的.copy()方法。