如何复制其中存储了不可腌制对象的实例?

How do I copy an instance that has non-pickleable objects stored within it?

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

我的想法是:

  1. 将实例副本创建为 new_instance
  2. 将new_instance中的所有不可pickle对象重写为None
  3. 泡菜new_instance
  4. 在指定的时间间隔重复

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

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

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

我在 class 的 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