我想泡菜一個對象和第二個對象,引用第一個。當我天真地醃製/取下這兩個物體時,參考變成了一個副本。如何保留兩個對象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)
我不認爲你可以保留跨單獨泡菜對象的身份。如果您有一個包含foo和bar的主對象x,並對它進行了pickle操作,當您取消對它的id(x.foo)== id(x.bar.foo_ref) – antlersoft 2011-06-16 17:43:53