copy_reg
copy_reg — Register pickle support functions
注意
该copy_reg
模块已被重命名为copyreg
Python 3. 当将源代码转换为Python 3时,2to3工具将自动适应导入。
该copy_reg
模块提供了一种定义酸洗特定对象时使用的函数的方法。的pickle
,cPickle
和copy
模块酸洗/复制这些对象时使用这些功能。该模块提供有关不是类的对象构造函数的配置信息。这样的构造函数可能是工厂函数或类实例。
copy_reg.constructor(object)
声明对象
是一个有效的构造函数。如果对象
不可调用(因此无法用作构造函数),则引发TypeError
。
copy_reg.pickle(type, function[, constructor])
声明该函数
应该用作类型
类型的
对象的“减少”函数
; 类型
不能是“经典”类对象。(经典类的处理方式不同; pickle
有关详细信息,请参阅模块的文档。)函数
应返回包含两个或三个元素的字符串或元组。
可选的构造函数
参数(如果提供的话)是一个可调用的对象,它可以在pickling时用函数
返回的参数元组调用时重建对象。TypeError
如果object
是一个类或者构造函数
不可调用,将会引发它。
有关函数
和构造函数
pickle
的接口的更多详细信息,请参阅模块。
1.例子
下面的例子想展示如何注册一个pickle函数以及如何使用它:
>>> import copy_reg, 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,)
...
>>> copy_reg.pickle(C, pickle_c)
>>> c = C(1)
>>> d = copy.copy(c)
pickling a C instance...
>>> p = pickle.dumps(c)
pickling a C instance...