diff -r 4b51a992cb70 Lib/shelve.py --- a/Lib/shelve.py Thu Jun 05 14:27:45 2014 +0200 +++ b/Lib/shelve.py Thu Jun 05 19:17:23 2014 +0300 @@ -91,6 +91,10 @@ self.cache = {} self.keyencoding = keyencoding + def __repr__(self): + return '{0}({1!r})'.format(self.__class__.__name__, + {key: self[key] for key in self}) + def __iter__(self): for k in self.dict.keys(): yield k.decode(self.keyencoding) diff -r 4b51a992cb70 Lib/test/test_shelve.py --- a/Lib/test/test_shelve.py Thu Jun 05 14:27:45 2014 +0200 +++ b/Lib/test/test_shelve.py Thu Jun 05 19:17:23 2014 +0300 @@ -162,6 +162,14 @@ else: self.fail('Closed shelf should not find a key') + def test_repr(self): + with shelve.Shelf({}) as s: + s['key'] = 1 + self.assertEqual(repr(s), "Shelf({'key': 1})") + with shelve.open(self.fn) as s: + s['key'] = 2 + self.assertEqual(repr(s), type(s).__name__ + "({'key': 2})") + from test import mapping_tests class TestShelveBase(mapping_tests.BasicTestMappingProtocol):