Spec-Zone.ru › Python 3.14

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

Исходный код: Lib/copyreg.py

Модуль copyreg позволяет определять функции, используемые при сериализации в pickle определённых объектов. Модули pickle и copy используют эти функции при сериализации в pickle и копировании таких объектов. Модуль предоставляет сведения о настройке конструкторов объектов, которые не являются классами. Такие конструкторы могут быть фабричными функциями или экземплярами классов.

copyreg.constructor(object)

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

copyreg.pickle(type, function, constructor_ob=None)

Объявляет, что function следует использовать как функцию «сведения» для объектов типа type. function должна возвращать либо строку, либо кортеж, содержащий от двух до шести элементов. Подробнее об интерфейсе function см. в разделе dispatch_table.

Параметр constructor_ob — устаревшая возможность, которая теперь игнорируется, но, если он передан, должен быть вызываемым.

Обратите внимание, что атрибут dispatch_table объекта-сериализатора или подкласса pickle.Pickler также можно использовать для объявления функций сведения.

Пример

В приведённом ниже примере показано, как зарегистрировать функцию pickle и как она будет использоваться:

>>> import copyreg, copy, pickle
>>> class C:
...     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)
pickling a C instance...
>>> p = pickle.dumps(c)
pickling a C instance...

© 2001 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.14/library/copyreg.html

Spec-Zone.ru

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