总结 Kroltan 和 jonsrharpe 的反应:
从技术上讲,它是可以工作的,如果你做得正确的话,就可以认为是OK的。
如果您将来编辑代码并触摸__init__,那么很容易(即使对您来说)忘记使用 in __setstate__,然后您就会进入难以调试的情况(问问自己,它来自哪里)。
class Calculator():
def __init__(self):
# some calculation stuff here
def __setstate__(self, state)
self.__init__()
Run Code Online (Sandbox Code Playgroud)
计算内容最好隔离到另一个共享方法中:
class Calculator():
def __init__(self):
self._shared_calculation()
def __setstate__(self, state)
self._shared_calculation()
def _shared_calculation(self):
#some calculation stuff here
Run Code Online (Sandbox Code Playgroud)
这样你就会注意到。
注意:使用“_”作为共享方法的前缀是任意的,您不必这样做。