import pickle as pickle import sys class C: def __init__(self): self.attrs = {} def __getattr__(self, name): if name in self.attrs: return self.attrs[name] raise AttributeError(name) sys.setrecursionlimit(20) fi = open('/tmp/test.pickle', 'wb') pickle.dump(C(), fi) fi.close() fi = open('/tmp/test.pickle', 'rb') print(pickle.load(fi))