Tim*_*Tim 0 python pickle python-3.x
我对以下关于Python in a Nutshell 中的 pickling 和 unpickling 的描述感到困惑。我不清楚“否则”和“在这种情况下”的用法,我不确定它们指的是哪种情况。如果您能以更清晰的方式(也许是伪代码)重新表述它,我将不胜感激。
\n\n\n\n下面是 pickle 如何保存类 \n T 的实例对象 x 的状态,然后将保存的状态重新加载到 T \n 的新实例 y (重新加载的第一步始终是创建一个新的空\n 实例 y T ,除非我们在下面明确说明\n):
\n\n\xe2\x80\xa2 当
\n\nT提供方法 时__getstate__,pickle 保存调用的\n 结果T.__getstate__(x)。\xe2\x80\xa2 当
\n\nT提供方法 时__setstate__,d可以是任何\n 类型,pickle 通过调用 \n 重新加载保存的状态T.__setstate__(y, d)。\xe2\x80\xa2 否则,
\n\nd必须是字典,而 pickle 只是设置 \ny.__dict__ = d。\xe2\x80\xa2 否则,当
\n\nT提供方法__getnewargs__且 pickle 正在使用协议 2 或更高协议进行 pickle 时,pickle 会保存调用t的 结果T.__getnewargs__(x);t必须是一个元组。在这种情况下, \xe2\x80\xa2 pickle 不是以空开头
\n\ny,而是y通过执行来 创建y = T.__new__(T, *t),从而结束重新加载。\xe2\x80\xa2 否则,默认情况下,pickle 保存为
\n\nd字典\nx.__dict__。\xe2\x80\xa2 当
\n\nT提供方法 时__setstate__,pickle 通过调用重新加载保存的状态T.__setstate__ (y, d)。\xe2\x80\xa2 否则,pickle 只是设置
\ny.__dict__ = d。
| 归档时间: |
|
| 查看次数: |
184 次 |
| 最近记录: |