copyreg --- 注意 pickle 支持函數?
源代碼: Lib/copyreg.py
copyreg 模塊提供了可在封存特定對象時使用的一種定義函數方式。 pickle 和 copy 模塊會在封存/拷貝特定對象時使用這些函數。 此模塊提供了非類對象構造器的相關配置信息。 這樣的構造器可以是工廠函數或類實例。
-
copyreg.pickle(type, function, constructor=None)? 聲明該 function 應當被用作 type 類型對象的“歸約函數”。 function 應當返回字符串或包含兩到三個元素的元組。
如果提供了可選的 constructor 形參,它應當是一個可用來重建相應對象的可調用對象,在調用該對象時應傳入由 function 所返回的參數元組。 如果 object 是一個類或 constructor 是不可調用的則將引發
TypeError。請查看
pickle模塊了解 function 和 constructor 所要求的接口的詳情。 請注意一個 pickler 對象或pickle.Pickler的子類的dispatch_table屬性也可以被用來聲明歸約函數。
示例?
以下示例將會顯示如何注冊一個封存函數,以及如何來使用它:
>>> import copyreg, copy, pickle
>>> class C(object):
... 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...
