前言

Python3的序列化和反序列化学习笔记

reduce()

定义类

1
2
3
4
class 类名:
def __reduce__(self):
...
return (self.__class__, ())

创建对象

1
对象 = 类名()

序列化

  • 序列化时会自动执行__reduce__()方法,但不得到返回值
1
序列化后的对象 = pickle.dumps(对象)

反序列化

  • 反序列化时会得到__reduce__()方法的返回值
1
pickle.loads(序列化后的对象)

setstate()

定义类

1
2
3
4
5
class 类名:
def __getstate__(self):
...
def __setstate__(self):
...

创建对象

1
对象 = 类名()

序列化

  • 序列化时会自动执行__getstate__()方法
1
序列化后的对象 = pickle.dumps(对象)

反序列化

  • 反序列化时会自动执行__setstate__()方法
1
pickle.loads(序列化后的对象)

完成

参考文献

哔哩哔哩——xiaodisec