New submission from Michael Yang <[EMAIL PROTECTED]>: # pickle.dumps is not able to process an instance of # a class that inherits from 'dict' and # overrides the built-in __getattribute__ method # but can successfully process one that # overrides the__getattr__ method
>>> class Examp1(dict): ... def __getattr__(self,name): ... return self[name] ... >>> class Examp2(dict): ... def __getattribute__(self,name): ... return self[name] ... >>> ex1 = Examp1() >>> ex2 = Examp2() >>> ex1['aKey'] = (3,4) >>> ex2['aKey2'] = (4,5) >>> ex1 {'aKey': (3, 4)} >>> ex1.aKey (3, 4) >>> ex2 {'aKey2': (4, 5)} >>> ex2.aKey2 (4, 5) >>> import pickle >>> pickle.dumps(ex1) b'\x80\x03c__main__\nexamp1\nq\x00)\x81q\x01X\x04\x00\x00\x00aKeyq\x02K\x03K\x04\x86q\x03s}q\x04b.' >>> pickle.dumps(ex2) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "[hidden]/python3/3.0b2/common/lib/python3.0/pickle.py", line 1319, in dumps Pickler(f, protocol).dump(obj) File "<stdin>", line 3, in __getattribute__ KeyError: '__reduce_ex__' ---------- components: Extension Modules messages: 71671 nosy: msyang severity: normal status: open title: pickle.dumps cannot save instance of dict-derived class that overrides __getattribute__ type: behavior versions: Python 2.5, Python 3.0 _______________________________________ Python tracker <[EMAIL PROTECTED]> <http://bugs.python.org/issue3635> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com