在Python 3中,是否总有一个变量可以在某个特定时刻保持类的不变状态?如果有的话,我一定会错过它的术语。我也不是在谈论静态,我的属性需要能够更改。
它会像这样工作:
class_save = [Class(a,b,c).attribute, Class(d,e,f).attribute]
static_save = class_save
#if I do this
class_save.remove(static_save[1])
#class_save should now equal [Class(a,b,c).attribute]
#static_save should still be equal to [Class(a,b,c).attribute, Class(d,e,f).attribute]
答案 0 :(得分:2)
您是指对象序列化吗?使用pickle
库,您可以进行pickle.dumps(object)
进行序列化和pickle.loads(serialized_object)
进行反序列化。
答案 1 :(得分:1)
如果内存中有完整副本,则需要深层复制
copy.deepcopy(x)
如果要将其冻结在磁盘pickle.dump
上。
答案 2 :(得分:1)
在评论中,您说:
我正在编写一个国际象棋游戏,并且正在为新手实现移动。我有一个列出所有可能的白手动作的函数,然后检查该列表以确保其他“ ChessPiece”类均未阻止任何动作。即使从中删除了一些元素,我也需要一种方法来引用该函数创建的原始列表。
好的,因此您具有原始的移动清单:
all_moves = [move1, move2, move3, ...]
然后您对其进行过滤:
valid_moves = [move for move in all_moves if is_valid_move(move)]
这为您提供了两个列表:第二个包含对第一个列表的元素子集的引用。不需要深度复制,也不需要过多的内存分配。