所以我有一个类可以根据 ID 记住它的实例。解开这样的对象时,我想处理两种情况:
- 不存在具有该 ID 的其他实例,因此会生成一个新实例并
__setstate__
应正常调用。 - 当该 ID 的另一个实例存在时,该对象被返回,我想避免调用
__setstate__
它。
请看一下这个类的定义。
您会注意到,目前我只更新评估为False
作为解决方法的属性。
我可以想到两种通用策略来解决这个问题:
- 与前面的答案一样,我可以定义另一个使用结果调用的函数,
__getnewargs__
并附加一些属性来告诉我是否运行__setstate__
。 - 如果我能分辨出是否
__call__
从泡菜中调用了类的方法,我也可以这样做。
我不知道是否有可能进一步干扰酸洗机械,我不想将 unpickler 子类化。
想法,建议,完全不同的解决方案?谢谢你。