我对以下从 Nutshell中的Python进行酸洗和酸洗的描述感到困惑。我不清楚“否则”和“在这种情况下”的用法,我不确定它们指的是哪种情况。如果您能以更清晰的方式(例如用伪代码)重新命名,我将不胜感激。
这是pickle如何保存类的实例对象x的状态 T,然后将保存的状态重新加载到T的新实例y中 (重新加载的第一步始终是将新的 T的实例y,除非我们在 以下):
•当
T
提供方法__getstate__
时,泡菜将保存 调用T.__getstate__(x)
的结果d。•当
T
提供方法__setstate__
时,d
可以是任何 键入,并且pickle通过调用重新加载保存的状态T.__setstate__(y, d)
。•否则,
d
必须是字典,而pickle只会设置y.__dict__ = d
。•否则,当
T
提供方法__getnewargs__
时,并且 腌制协议2或更高的腌制,腌制保存 调用t
的结果T.__getnewargs__(x)
;t
必须是 元组。•在这种情况下,泡菜不是以空的
y
开头,而是 而是通过执行y
创建y = T.__new__(T, *t)
, 重新加载结束。•否则,默认情况下,泡菜将字典另存为
d
x.__dict__
。•当
T
提供方法__setstate__
时,泡菜重新加载 通过调用T.__setstate__ (y, d)
保存状态。•否则,泡菜只设置
y.__dict__ = d
。