From: PBlitz <dev...@gm...> - 2008-03-12 08:27:13
|
Here a more precise description of the issue: Pickling of a class derived from dict creates an empty pickle in jython 2.2.1. In contrast Python 2.5.2 delivers the expected result. So I assume a bug in the jython pickle module. Does anyone know if a developer release of jython already solves the problem? Or how to patch the module? # code describing the issue: class MyDict(dict): def __init__(self, d = None): if d == None: d = {} dict.__init__(self, d) if __name__ == "__main__": import pickle md = MyDict({'b': [2, 3], 'z': [0, 1]}) p = pickle.dumps(md) rd = pickle.loads(p) print "-> pickle p:\n", p print "-> MyDict md:\n", md print "-> reconstructed MyDict rd:\n", rd # jython 2.2.1 output with empty pickle p: -> pickle p: c__main__ MyDict p0 (tp1 Rp2 . -> MyDict md: {'b': [2, 3], 'z': [0, 1]} -> reconstructed MyDict rd: {} # in contrast python 2.5.2 output with filled pickle p: -> pickle p: ccopy_reg _reconstructor p0 (c__main__ MyDict p1 c__builtin__ dict p2 (dp3 S'b' p4 (lp5 I2 aI3 asS'z' p6 (lp7 I0 aI1 astp8 Rp9 . -> MyDict md: {'b': [2, 3], 'z': [0, 1]} -> reconstructed MyDict rd: {'b': [2, 3], 'z': [0, 1]} -- View this message in context: http://www.nabble.com/cant-pickle-an-instance-of-a-custom-class-tp15975727p15999958.html Sent from the jython-users mailing list archive at Nabble.com. |