copyreg --- 注册�� pickle 模�使用的函数¶
æº�代ç �: Lib/copyreg.py
copyreg 模å�—æ��供了å�¯åœ¨å°�å˜ç‰¹å®šå¯¹è±¡æ—¶ä½¿ç”¨çš„一ç§�定义函数方å¼�。 pickle å’Œ copy 模å�—会在å°�å˜/æ‹·è´�特定对象时使用这些函数。 æ¤æ¨¡å�—æ��供了é�žç±»å¯¹è±¡æž„é€ å™¨çš„ç›¸å…³é…�置信æ�¯ã€‚ è¿™æ ·çš„æž„é€ å™¨å�¯ä»¥æ˜¯å·¥åŽ‚å‡½æ•°æˆ–ç±»å®žä¾‹ã€‚
- copyreg.constructor(object)¶
å°† object å£°æ˜Žä¸ºä¸€ä¸ªæœ‰æ•ˆçš„æž„é€ å™¨ã€‚ 如果 object 是ä¸�å�¯è°ƒç”¨çš„ï¼ˆå› è€Œä¸�æ˜¯ä¸€ä¸ªæœ‰æ•ˆçš„æž„é€ å™¨ï¼‰åˆ™ä¼šå¼•å�‘
TypeError。
- copyreg.pickle(type, function, constructor_ob=None)¶
声明 function 应当被用作 type 类型的对象的“归约â€�函数。 function 必须返回一个å—符串或包å�«äºŒè‡³å…ä¸ªå…ƒç´ çš„å…ƒç»„ã€‚ 请å�‚阅
dispatch_table了解有关 function 的接å�£çš„æ›´å¤šç»†èŠ‚ã€‚constructor_ob å½¢å�‚是一个旧å¼�ç‰¹æ€§å¹¶ä¸”çŽ°åœ¨ä¼šè¢«å¿½ç•¥ï¼Œä½†å¦‚æžœä¼ å…¥åˆ™å®ƒå¿…é¡»ä¸ºä¸€ä¸ªå�¯è°ƒç”¨å¯¹è±¡ã€‚
请注�一个 pickler 或
pickle.Picklerçš„å�类的dispatch_table属性也å�¯ä»¥è¢«ç”¨æ�¥å£°æ˜Žçº¦å½’函数。
示例¶
以下示例将会显示如何注册一个å°�å˜å‡½æ•°ï¼Œä»¥å�Šå¦‚何æ�¥ä½¿ç”¨å®ƒï¼š
>>> import copyreg, copy, pickle
>>> class C:
... def __init__(self, a):
... self.a = a
...
>>> def pickle_c(c):
... print("pickling a C instance...")
... return C, (c.a,)
...
>>> copyreg.pickle(C, pickle_c)
>>> c = C(1)
>>> d = copy.copy(c)
pickling a C instance...
>>> p = pickle.dumps(c)
pickling a C instance...