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 должна возвращать либо строку, либо кортеж, содержащий от двух до шести элементов. См.
dispatch_tableдля получения дополнительной информации об интерфейсе function.Параметр 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–2023 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.11/library/copyreg.html