copy_reg (Data Persistence) – Python 中文开发手册

[
  •   Python 中文开发手册

    copy_reg (Data Persistence) - Python 中文开发手册

    注意

    该copy_reg模块已被重命名为copyregPython 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...
  •   Python 中文开发手册
    ]
    转载请保留页面地址:https://www.breakyizhan.com/python/34881.html

    posted on 2020-07-07 21:36  MrAit  阅读(289)  评论(0编辑  收藏  举报

    导航