Хранилища, создаваемые модулем shelve, также наследуют некоторые ограничения механизма сериализации, не относящиеся к классам. Как уже говорилось выше, некоторые виды объектов (например, открытые файлы и сокеты) не могут быть сериализованы и потому не могут быть записаны в хранилище.
В ранних версиях Python классы постоянно хранимых объектов также должны были иметь конструкторы без аргументов или обеспечивать значения по умолчанию для всех аргументов конструктора (подобно понятию конструктора копирования в C++). Это ограничение было снято в Python 1.5.2 — классы, конструкторы которых имеют аргументы без значений по умолчанию, теперь нормально обрабатываются при сериа- лизации.
Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, II том, 2011