Spec-Zone.ru › Python 3.13

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

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

Модуль copyreg предоставляет способ определения функций, используемых при сериализации конкретных объектов. Модули 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–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.13/library/copyreg.html

Spec-Zone.ru

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