Spec-Zone.ru › Python 3.13

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

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

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

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–2025 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.13/library/copyreg.html

Spec-Zone.ru

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