Attualmente sto facendo qualcosa di simile alla domanda poser, tuttavia, sto usando una sottoclasse di defaultdict che ha una funzione membro che viene usata come default_factory. Per far funzionare correttamente il mio codice (ho richiesto che la funzione fosse definita in fase di runtime), ho semplicemente aggiunto del codice per preparare l'oggetto al decapaggio.
Invece di:
...
pickle.dump(dict, file)
...
Io uso questo:
....
factory = dict.default_factory
dict.default_factory = None
pickle.dump(dict, file)
dict.default_factory = factory
...
Questo non è il codice esatto che ho usato come mio albero è un oggetto che crea istanze dello stesso tipo del albero come gli indici sono richiesti (quindi uso una funzione membro ricorsiva per eseguire le operazioni pre/post pickle), ma questo modello risponde anche alla domanda.
fonte
2014-01-03 14:58:01
Potresti disimballare per me come funziona? Sono incuriosito ... – Fred