Python определяет несколько специальных методов, таких как getstate и многие другие, чтобы ваши классы могли точно определить, как лучше всего сериализовать и десериализовать их экземпляры. Все они используются внутренне модулем pickle
(который затем использует эту информацию для создания «большого двоичного объекта», то есть строки байтов и восстановления объектов из таких больших двоичных объектов), но, если вы хотите улучшить индексирование, полученное путем хранения графиков напрямую, а не с помощью непрозрачных блобов, это в основном вопрос настройки процедур pickle
, чтобы они останавливались непосредственно перед превращением графиков в капли. Я думаю, вам придется сделать это путем копирования-вставки-редактирования pickle.py
(поскольку он не предназначен для такой настройки с помощью более изящных методов, таких как создание подклассов), но это все равно должно сэкономить вам много работы по сравнению с повторным редактированием это все с нуля.
Я полагаю, что этот подход лежит где-то между вашими вариантами 1 и 2 - классы должны определять такие специальные методы только в ответ на конкретные потребности, и большая часть работы, необходимой для организации различных возможностей, будет выполняться вашим вариантом рассола (так же, как он обрабатывается самим pickle для «нормального» случая, когда сериализованная форма представляет собой BLOB-объект).