Spec-Zone.ru › Python 2.7

copy_reg — Регистрация функций поддержки pickle

Примечание

Модуль copy_reg был переименован в copyreg в Python 3. Инструмент 2to3 автоматически адаптирует импорты при преобразовании ваших источников в Python 3.

Модуль copy_reg предлагает способ определения функций, используемых при сериализации (pickling) определённых объектов. Модули pickle, cPickle и copy используют эти функции при сериализации/копировании этих объектов. Модуль предоставляет информацию о конфигурации конструкторов объектов, которые не являются классами. Такие конструкторы могут быть функциями-фабриками или экземплярами классов.

copy_reg.constructor(object)

Объявляет, что object является допустимым конструктором. Если object не вызываем (и, следовательно, не является допустимым конструктором), генерируется исключение TypeError.

copy_reg.pickle(type, function[, constructor])

Объявляет, что function должна использоваться в качестве функции «сокращения» для объектов типа type; type не должен быть объектом «классического» класса. (Классические классы обрабатываются по-другому; см. документацию модуля pickle для подробностей.) function должна возвращать строку или кортеж, содержащий два или три элемента.

Необязательный параметр constructor, если он предоставлен, представляет вызываемый объект, который может использоваться для восстановления объекта при вызове с кортежем аргументов, возвращенных function во время сериализации. Если object является классом или constructor не вызываем, будет возбуждено исключение TypeError.

См. модуль pickle для получения более подробной информации о интерфейсе, ожидаемом от function и constructor.

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

© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/2.7/library/copy_reg.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API