Содержание страницы
copyreg – Регистрация вспомогательных функций pickle¶copyreg – Register pickle support functions
Исходный код: Lib/copyreg.py
Модуль copyreg позволяет определять функции, используемые при упаковке (pickling) конкретных объектов. Модули pickle и copy используют эти функции при упаковке/копировании этих объектов. Модуль предоставляет конфигурационную информацию о конструкторах объектов, которые не являются классами. Такие конструкторы могут быть фабричными функциями или экземплярами классов.
- copyreg.constructor(object)¶
Объявляет object допустимым конструктором. Если object не является вызываемым (и, следовательно, недопустим как конструктор), возбуждается
TypeError.
- copyreg.pickle(type, function, constructor_ob=None)¶
Объявляет, что function должна использоваться как функция сокращения (reduction) для объектов типа type. function должна возвращать либо строку, либо кортеж, содержащий от двух до шести элементов. Подробнее об интерфейсе function см.
dispatch_table.Параметр constructor_ob является устаревшей возможностью и теперь игнорируется, но если он передан, то должен быть вызываемым.
Обратите внимание, что атрибут
dispatch_tableобъекта pickler или подклассаpickle.Picklerтакже можно использовать для объявления функций сокращения.
Пример¶Example
Пример ниже демонстрирует, как зарегистрировать функцию 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...