【问题标题】:How to store an instance object in shelve?如何将实例对象存储在搁置中?
【发布时间】:2019-10-06 23:15:53
【问题描述】:
instance1 = class_A()
shelve["key1"] = instance1

所以instance1 是对存储在内存中的class_A 实例的引用。

上述代码是否取消引用instance1 并将底层对象实例存储在搁置中?还是只存储引用?

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

【问题讨论】:

  • 货架就像永久字典,在这种情况下的值将是 class_A 的实例。当程序重新启动并稍后重新打开架子时,键和关联的值(class_A 的实例)都将仍然存在。

标签: python pickle shelve dbm


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2019-11-03
    • 1970-01-01
    • 2021-10-22
    • 1970-01-01
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多