Помимо указанных ограничений хранилищ модуля shelve, сохранение экземпляров классов в таких хранилищах вводит ряд правил, о которых необходимо знать. В действительности они налагаются модулем pickle, а не shelve, поэтому следуйте им, даже когда будете сохранять экземпляры классов непосредственно с помощью модуля pickle.
Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, II том, 2011