copyreg — Регистрация функций поддержки pickle
Исходный код: Lib/copyreg.py
Модуль copyreg предоставляет способ определения функций, используемых при сериализации (pickling) определенных объектов. Модули pickle и copy используют эти функции при сериализации/копировании этих объектов. Модуль предоставляет информацию о конфигурации конструкторов объектов, которые не являются классами. Такие конструкторы могут быть функциями-фабриками или экземплярами классов.
-
copyreg.constructor(object) -
Объявляет object как допустимый конструктор. Если object не является вызываемым (и, следовательно, не является допустимым конструктором), генерируется исключение
TypeError.
-
copyreg.pickle(type, function, constructor=None) -
Объявляет, что function должна использоваться в качестве функции «редукции» для объектов типа type. function должна возвращать либо строку, либо кортеж, содержащий два или три элемента.
Необязательный параметр constructor, если он предоставлен, представляет собой вызываемый объект, который может использоваться для реконструкции объекта при вызове с кортежем аргументов, возвращённым function во время сериализации. Если object является классом или constructor не является вызываемым, будет сгенерировано исключение
TypeError.См. модуль
pickleдля получения более подробной информации об интерфейсе, ожидаемом от function и constructor. Обратите внимание, что атрибутdispatch_tableобъекта пиклер или подклассаpickle.Picklerтакже может использоваться для объявления функций редукции.
12.2.1. Пример
В приведенном ниже примере показано, как зарегистрировать функцию 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.6/library/copyreg.html