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.Для получения более подробной информации об интерфейсе, ожидаемом от 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–2022 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.8/library/copyreg.html