Quiero recortar un objeto y un segundo objeto que hace referencia al primero. Cuando inocentemente saco/desenrollo los dos objetos, la referencia se convierte en una copia. ¿Cómo guardo el enlace entre los dos objetos foo
y bar.foo_ref
?Objetos vinculados a salmuera
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)
No creo que pueda preservar la identidad del objeto en diferentes escapes. Si tenía un objeto maestro x que incluía foo y barra, y lo decapaba, cuando lo desató Id (x.foo) == id (x.bar.foo_ref) – antlersoft