Spec-Zone.ru › Python 3.7

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

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

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

copyreg.constructor(object)

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

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

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

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

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

Пример

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

>>> 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)  
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/3.7/library/copyreg.html

Spec-Zone.ru

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