Hi, Thanks Ian for replying to my previous post. Here is a further question on the 'return' line below.
import collections import pickle class C(collections.defaultdict): def __init__(self): collections.defaultdict.__init__(self, list) def __reduce__(self): t = collections.defaultdict.__reduce__(self) return (t[0], ()) + t[2:] c=C() print c print c.__reduce__() c[1].append(200) c[2].append(223) c2 = pickle.loads(pickle.dumps(c)) c2 == c /////////// >From below command, I see 't' should be a tuple: c.__reduce__() Out[103]: (__main__.C, (), None, None, <dictionary-itemiterator at 0xaa0dd68>) Then, I cannot get the idea what the two level parenthesis are for. Its result is a tuple? Then, it can add 't[2:]'. return (t[0], ()) + t[2:] It is not a tuple because there is no third level parenthesis, i.e. ((t[0], ()) + t[2:]) Do you have a simple way for me to make it clear? Thanks, -- https://mail.python.org/mailman/listinfo/python-list