有没有一种方法可以在特定的时间段保存类的状态?

时间:2018-10-20 05:04:45

标签: python class static

在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]

3 个答案:

答案 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)]

这为您提供了两个列表:第二个包含对第一个列表的元素子集的引用。不需要深度复制,也不需要过多的内存分配。