如何禁用酸洗?
How to disable pickling?
我有一个 class 一些用户可能会尝试腌制它。
如果他们这样做,我想做的是:
- 调用对象实例中所有子项的析构方法
- 提出
NotImplemented
错误
但是,我不确定我需要定义什么覆盖,以便每当 pickle 尝试序列化此对象实例时,我都可以执行这两个任务。
I.E.,在伪代码中,是否有一些模拟:
def __pickle__(self):
...
# i.e.
def __<the function pickle looks for when it pickles>__(self):
del x
del y
del z
...
raise NotImplemented("You Fool! Ahhh!!!")
您可以使用__getstate__
方法。这将在您的对象被腌制时调用,您可以在此处执行您需要的操作。
def __getstate__(self):
raise NotImplementedError("You Fool! Ahhh!!!")
文档:https://docs.python.org/3/library/pickle.html#handling-stateful-objects
我有一个 class 一些用户可能会尝试腌制它。
如果他们这样做,我想做的是:
- 调用对象实例中所有子项的析构方法
- 提出
NotImplemented
错误
但是,我不确定我需要定义什么覆盖,以便每当 pickle 尝试序列化此对象实例时,我都可以执行这两个任务。
I.E.,在伪代码中,是否有一些模拟:
def __pickle__(self):
...
# i.e.
def __<the function pickle looks for when it pickles>__(self):
del x
del y
del z
...
raise NotImplemented("You Fool! Ahhh!!!")
您可以使用__getstate__
方法。这将在您的对象被腌制时调用,您可以在此处执行您需要的操作。
def __getstate__(self):
raise NotImplementedError("You Fool! Ahhh!!!")
文档:https://docs.python.org/3/library/pickle.html#handling-stateful-objects