python - 如何将实例对象存储在架子中?

标签 python pickle shelve dbm

instance1 = class_A()
shelve["key1"] = instance1

因此,instance1 是对存储在内存中的 class_A 实例的引用。

上面的代码是否取消引用instance1并将底层对象实例存储在shelve中?或者它只存储引用?

因为我不想只存储引用instance1,当程序关闭时,底层对象被释放,然后instance1引用在下一个程序中变得无效开始。

最佳答案

架子不存储对内存中实例的引用。它们使用 pickle 序列化对象并存储序列化表示,以便稍后可以从中重新创建对象。如果 shelve 尝试存储引用,它就不可能完成其工作(并且尝试存储“底层对象实例”会遇到类似的问题)。

关于python - 如何将实例对象存储在架子中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58261978/

相关文章:

python - 检查字典值的范围

python - 如何使用 dill 库通过 shelve 库进行对象序列化

Python 的 __reduce__/copy_reg 语义和有状态的 unpickler

python - 有问题的功能 pickle

python - 搁置给出奇怪的错误

python - python中的语音识别持续时间设置问题

python - 在 Python3 上使用 Pandas 数据框未对齐

python - 带引号参数的子进程调用

python - pickle cython类

python - 在Python中Unpickling "None"对象