Pickle связанных объектов

Я хочу выделить объект и второй объект, который ссылается на первый. Когда я наивно протираю / снимаю два объекта, ссылка становится копией. Как сохранить связь между двумя объектами foo и bar.foo_ref ?

import pickle

class Foo(object):
    pass

foo = Foo()
bar = Foo()
bar.foo_ref = foo

with open('tmp.pkl', 'wb') as f:
    pickle.dump(foo, f)
    pickle.dump(bar, f)
with open('tmp.pkl', 'rb') as f:
    foo2 = pickle.load(f)
    bar2 = pickle.load(f)

print id(foo) == id(bar.foo_ref) # True
print id(foo2) == id(bar2.foo_ref) # False
# want id(foo2) == id(bar2.foo_ref)
11
задан matt 16 June 2011 в 17:31
поделиться