ThinkSSL🔒 一键申购 5分钟快速签发 30天无理由退款 购买更放心 广告
### 导航 - [索引](../genindex.xhtml "总目录") - [模块](../py-modindex.xhtml "Python 模块索引") | - [下一页](shelve.xhtml "shelve --- Python object persistence") | - [上一页](pickle.xhtml "pickle —— Python 对象序列化") | - ![](https://box.kancloud.cn/a721fc7ec672275e257bbbfde49a4d4e_16x16.png) - [Python](https://www.python.org/) » - zh\_CN 3.7.3 [文档](../index.xhtml) » - [Python 标准库](index.xhtml) » - [数据持久化](persistence.xhtml) » - $('.inline-search').show(0); | # [`copyreg`](#module-copyreg "copyreg: Register pickle support functions.") --- Register [`pickle`](pickle.xhtml#module-pickle "pickle: Convert Python objects to streams of bytes and back.") support functions **Source code:** [Lib/copyreg.py](https://github.com/python/cpython/tree/3.7/Lib/copyreg.py) \[https://github.com/python/cpython/tree/3.7/Lib/copyreg.py\] - - - - - - The [`copyreg`](#module-copyreg "copyreg: Register pickle support functions.") module offers a way to define functions used while pickling specific objects. The [`pickle`](pickle.xhtml#module-pickle "pickle: Convert Python objects to streams of bytes and back.") and [`copy`](copy.xhtml#module-copy "copy: Shallow and deep copy operations.") modules use those functions when pickling/copying those objects. The module provides configuration information about object constructors which are not classes. Such constructors may be factory functions or class instances. `copyreg.``constructor`(*object*)Declares *object* to be a valid constructor. If *object* is not callable (and hence not valid as a constructor), raises [`TypeError`](exceptions.xhtml#TypeError "TypeError"). `copyreg.``pickle`(*type*, *function*, *constructor=None*)Declares that *function* should be used as a "reduction" function for objects of type *type*. *function* should return either a string or a tuple containing two or three elements. 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. [`TypeError`](exceptions.xhtml#TypeError "TypeError") will be raised if *object* is a class or *constructor* is not callable. See the [`pickle`](pickle.xhtml#module-pickle "pickle: Convert Python objects to streams of bytes and back.") module for more details on the interface expected of *function* and *constructor*. Note that the [`dispatch_table`](pickle.xhtml#pickle.Pickler.dispatch_table "pickle.Pickler.dispatch_table") attribute of a pickler object or subclass of [`pickle.Pickler`](pickle.xhtml#pickle.Pickler "pickle.Pickler") can also be used for declaring reduction functions. ## 示例 The example below would like to show how to register a pickle function and how it will be used: ``` >>> import copyreg, 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,) ... >>> copyreg.pickle(C, pickle_c) >>> c = C(1) >>> d = copy.copy(c) # doctest: +SKIP pickling a C instance... >>> p = pickle.dumps(c) # doctest: +SKIP pickling a C instance... ``` ### 导航 - [索引](../genindex.xhtml "总目录") - [模块](../py-modindex.xhtml "Python 模块索引") | - [下一页](shelve.xhtml "shelve --- Python object persistence") | - [上一页](pickle.xhtml "pickle —— Python 对象序列化") | - ![](https://box.kancloud.cn/a721fc7ec672275e257bbbfde49a4d4e_16x16.png) - [Python](https://www.python.org/) » - zh\_CN 3.7.3 [文档](../index.xhtml) » - [Python 标准库](index.xhtml) » - [数据持久化](persistence.xhtml) » - $('.inline-search').show(0); | © [版权所有](../copyright.xhtml) 2001-2019, Python Software Foundation. Python 软件基金会是一个非盈利组织。 [请捐助。](https://www.python.org/psf/donations/) 最后更新于 5月 21, 2019. [发现了问题](../bugs.xhtml)? 使用[Sphinx](http://sphinx.pocoo.org/)1.8.4 创建。