gpt4 book ai didi

python - 如何在没有副作用的情况下 pickle 和解 pickle ?

转载 作者:行者123 更新时间:2023-12-03 10:08:27 27 4
gpt4 key购买 nike

为什么 pickle 重用现有的 Python 类“C”而不是从 pickle 字节重建类?有没有一种方法可以在没有副作用的情况下 pickle 和解 pickle ?

这是我的回复 session :

In [1]: import pickle

In [2]: class C:
...: pass
...:

In [3]: hasattr(C, 'foo')
Out[3]: False

In [4]: pickled = pickle.dumps(C)

In [5]: C.foo = 'bar'

In [6]: hasattr(C, 'foo')
Out[6]: True

In [7]: C_without_foo = pickle.loads(pickled)

In [8]: hasattr(C_without_foo, 'foo')
Out[8]: True

In [9]: hasattr(C, 'foo')
Out[9]: True

最佳答案

我认为问题在于您正在 pickle 类本身,而不是特定对象。

import pickle
class C:
pass

myC = C() #pickle myC object, not the C class
print(hasattr(myC, 'foo'))

pickled = pickle.dumps(myC)

myC.foo = 'bar'
print(hasattr(myC, 'foo'))

C_without_foo = pickle.loads(pickled)
print(hasattr(C_without_foo, 'foo'))
print(hasattr(myC, 'foo'))

关于python - 如何在没有副作用的情况下 pickle 和解 pickle ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61652432/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com