Ответ 1
Модуль pickle
поставляется как для python-only, так и для варианта C (называемый cPickle
). Таким образом, метод __reduce__
должен быть вызван из кода Python.
Таким образом, вам необходимо предоставить запись __reduce__
в объекте C PyMethodDef
struct с подходящей реализацией.
В качестве альтернативы вы также можете зарегистрировать функцию травления с помощью copy_reg
module. Этот оригинальный исходный код модуля должен был лучше поддерживать модули расширения; исходный код для состояния модуля:
Это полезно только для добавления поддержки разбора для типов расширений, определенных в C, а не для экземпляров пользовательских классов.