如何在Python中制作pickle-friend对象id?

时间:2013-12-17 06:42:29

标签: python pickle

我正在尝试使用Python pickle模块保留一些Python对象,这些对象使用

id(object)

作为外部标识符(例如,在网页上)。

问题是,我发现在pickle dump/load cycle后,id(object)值会发生变化。这使id(object)无法用于需要不变值的外部标识符。

那么如何才能方便地创建id之后未更改的pickle/unpickle

1 个答案:

答案 0 :(得分:3)

你不能。

id的文档:

  

返回对象的“标识”。这是一个整数(或长整数)   整数)保证对于该对象是唯一的和常量的   在其一生中。

因此,两个不同的对象(即如果a is not bTrue)有两个不同的ID。

备选方案:

(1)如果您的类型是可清除的,则可以使用hash

hash((1,2,3))

(2)只有少数东西可以清洗,但你可以散乱泡菜,例如

hash(pickle.dumps([1,2,3]))

(3)您可以为每个对象明确设置id属性。