思路
pickle 是什么
Hello pickle!
pickle 能解析什么?
自定义的类怎么使用 pickle
pickle
pickle 是 Python 里的序列化工具。
pickle can save and restore class instances transparently, however the class definition must be importable and live in the same module as when the object was stored.
Hello pickle
>>> import pickle
>>> s = 'Hello pickle~'
>>> sp = pickle.dumps(s)
>>> "S'Hello pickle'\np0\n."
>>> sp
>>> pickle.loads(sp)
pickle 能解析什么
string ?
simple dict ?
datetime ?
>>> pickle.loads(pickle.dumps({'a': 'aaa', 'n': 123}))
{'a': 'aaa', 'n': 123}
>>> pickle.dumps(datetime.datetime.now())
"cdatetime\ndatetime\np0\n(S'\\x07\\xe0\\x05\\x1f\\x0e:\\x15\\x03\\x17\\xde'\np1\ntp2\nRp3\n."
>>> pickle.loads("cdatetime\ndatetime\np0\n(S'\\x07\\xe0\\x05\\x1f\\x0e:\\x15\\x03\\x17\\xde'\np1\ntp2\nRp3\n.")
datetime.datetime(2016, 5, 31, 14, 57, 51, 537279)
11.1.4. What can be pickled and unpickled?
写一个 picklable 的类
发现如下的类是可以直接 pickle 的,且 unpickle 的地方只要引用过了 User Class 就可以成功 unpickle。
class User(object):
def __init__(self, id, name):
self.id = id
self.name = name
>>> u1 = User(1, 'a')
>>> pickle.dumps(u1)
"ccopy_reg\n_reconstructor\np0\n(c__main__\nUser\np1\nc__builtin__\nobject\np2\nNtp3\nRp4\n(dp5\nS'id'\np6\nI1\nsS'name'\np7\nS'a'\np8\nsb."
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。