【问题标题】:How do I copy an instance that has non-pickleable objects stored within it?如何复制其中存储了不可腌制对象的实例?
【发布时间】:2021-04-12 21:23:59
【问题描述】:

我的实例中有不可腌制的对象。 但是,我希望能够在程序运行时保存实例以防万一。这样我就可以轻松重启程序了。

我的想法是:

  1. 将实例副本创建为 new_instance
  2. 将 new_instance 中的所有不可腌制对象重写为 None
  3. 腌制新实例
  4. 以指定的时间间隔重复

但是,copy() 和 deepcopy() 不起作用。 copy() 只是出于某种原因将引用分配给原始对象 & Deepcopy() 给了我同样的错误,即我的实例中的对象不可腌制。

我应该使用另一种选择/更好的方法吗? 有没有办法在腌制时忽略某些对象类型,这样我就不需要创建副本、重写和腌制?

【问题讨论】:

  • 你必须自己写出逻辑。
  • 哈哈,我怕这可能是答案。

标签: python serialization copy instance pickle


【解决方案1】:

我最终根据 juanpa.arrivillaga 的输入自己编写了逻辑。

我在类的 init(self) 中创建了一个空副本。 然后,稍后使用如下函数进行更新:

def save_copy(self):
     for i, j in self.__dict__.items():
          # Ignore nonpickeable items
          if(type(i) == 'nonpickeable'):
              pass
          else:
              # Set copy dictionary to instance dictionary
              # if pickeable
              self._copy.__dict__[i] = j

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-04
    • 2017-10-08
    • 1970-01-01
    • 2014-09-26
    • 2011-04-05
    • 2011-01-07
    相关资源
    最近更新 更多