copyreg
--- 注冊配合 pickle
模塊使用的函數(shù)?
源代碼: Lib/copyreg.py
copyreg
模塊提供了可在封存特定對象時使用的一種定義函數(shù)方式。 pickle
和 copy
模塊會在封存/拷貝特定對象時使用這些函數(shù)。 此模塊提供了非類對象構(gòu)造器的相關(guān)配置信息。 這樣的構(gòu)造器可以是工廠函數(shù)或類實例。
- copyreg.constructor(object)?
將 object 聲明為一個有效的構(gòu)造器。 如果 object 是不可調(diào)用的(因而不是一個有效的構(gòu)造器)則會引發(fā)
TypeError
。
- copyreg.pickle(type, function, constructor=None)?
聲明該 function 應(yīng)當(dāng)被用作 type 類型對象的“歸約函數(shù)”。 function 應(yīng)當(dāng)返回字符串或包含兩到三個元素的元組。
The optional constructor parameter, if provided, is a callable object which can be used to reconstruct the object when called with the tuple of arguments returned by function at pickling time. A
TypeError
is raised if the constructor is not callable.請查看
pickle
模塊了解 function 和 constructor 所要求的接口的詳情。 請注意一個 pickler 對象或pickle.Pickler
的子類的dispatch_table
屬性也可以被用來聲明歸約函數(shù)。
示例?
以下示例將會顯示如何注冊一個封存函數(shù),以及如何來使用它:
>>> 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...