copy_reg

copy_reg — Register pickle support functions

注意

copy_reg模块已被重命名为copyregPython 3. 当将源代码转换为Python 3时,2to3工具将自动适应导入。

copy_reg模块提供了一种定义酸洗特定对象时使用的函数的方法。的picklecPicklecopy模块酸洗/复制这些对象时使用这些功能。该模块提供有关不是类的对象构造函数的配置信息。这样的构造函数可能是工厂函数或类实例。

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...