首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

copy_reg

注意

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函数以及如何使用它:

代码语言:javascript
复制
>>> 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...

扫码关注腾讯云开发者

领取腾讯云代金券