#!/usr/bin/env python import pickle import StringIO sio = StringIO.StringIO() pickler = pickle.Pickler(sio) class B(object): def __init__(self, name="unknown"): self.name = name self.a = None def setA(self, a): self.a = a def __reduce__(self): return self.__class__, (self.name,), self.__dict__ class A(object): def __init__(self, name, b): self.name = name self.b = b def __reduce__(self): return self.__class__, (self.name, self.b), self.__dict__ b = B("manny") a = A("moe", b) b.setA(a) pickler.dump(a)