python __reduce__
时间: 2023-10-16 20:28:59 浏览: 71
`__reduce__()` 是 Python 中的一个特殊方法。它是 Python 对象的序列化和反序列化过程中使用的一种协议。在序列化时,`__reduce__()` 方法返回一个元组,包含两个对象:一个可调用的函数或方法和一个参数元组。这个可调用的函数或方法将在反序列化时被调用,参数元组将被传递给它。
下面是一个简单的例子,演示了如何使用 `__reduce__()` 方法:
```python
import pickle
class MyClass:
def __init__(self, x, y):
self.x = x
self.y = y
def __reduce__(self):
return (MyClass, (self.x, self.y))
obj = MyClass(1, 2)
data = pickle.dumps(obj)
new_obj = pickle.loads(data)
print(new_obj.x, new_obj.y) # 输出: 1 2
```
在这个例子中,`MyClass` 类实现了 `__reduce__()` 方法。当 `obj` 对象被序列化时,`__reduce__()` 方法返回一个元组,包含 `MyClass` 类和构造函数的参数元组 `(self.x, self.y)`。在反序列化时,这些参数将被传递给 `MyClass` 类的构造函数,创建一个新的对象 `new_obj`。最后,我们打印 `new_obj.x` 和 `new_obj.y` 的值,证明反序列化成功。
阅读全文