我正在增强现有类,该类在 __init__
函数中进行一些计算以确定实例状态。是否可以从 __getstate__()
调用 __init__()
以重用这些计算?
最佳答案
总结 Kroltan 和 jonsrharpe 的 react :
技术上没问题
从技术上讲,它会起作用,如果你做得好,它可以被认为是 OK。
实际上这很棘手,避免这种情况
如果您以后编辑代码并触摸__init__
,那么很容易(甚至对您而言)忘记在__setstate__
中使用,然后您将进入难以执行的状态调试情况(问问自己,它来自哪里)。
class Calculator():
def __init__(self):
# some calculation stuff here
def __setstate__(self, state)
self.__init__()
计算的东西最好隔离到另一个共享方法中:
class Calculator():
def __init__(self):
self._shared_calculation()
def __setstate__(self, state)
self._shared_calculation()
def _shared_calculation(self):
#some calculation stuff here
这样你会注意到。
注意:使用“_”作为共享方法的前缀是任意的,您不必这样做。
关于python - 从 __setstate__ 调用 __init__ 可以吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23461479/