你需要把整个“宇宙”中相互关联的物体放在一起
pickle.dump
打电话让他们正确取下。
这是你的代码的一个版本。(当然
universe
可以是一个字典,而不是一个包含两个项目的列表,但你明白这一点。)
import pickle
class class1(object):
def __init__(self, name):
self.name = name
class class2(object):
def __init__(self, name, otherclass):
self.name = name
self.otherclass = otherclass
def test(c1, c2):
print c1.name, ':', c1
print c2.name, ':', c2
print c2.name, 'has', c2.otherclass.name, ':', c2.otherclass
print c2.name, "'s 'inside' class is c1:", (c2.otherclass is c1)
c1 = class1("class1")
c2 = class2("class2", c1)
test(c1, c2)
universe = [c1, c2]
pickled_universe = pickle.dumps(universe)
c1, c2 = pickle.loads(pickled_universe)
test(c1, c2)
输出:
class1 : <__main__.class1 object at 0x01F6A830>
class2 : <__main__.class2 object at 0x01F6A870>
class2 has class1 : <__main__.class1 object at 0x01F6A830>
class2 's 'inside' class is c1: True
class1 : <__main__.class1 object at 0x01F6A8B0>
class2 : <__main__.class2 object at 0x01F71230>
class2 has class1 : <__main__.class1 object at 0x01F6A8B0>
class2 's 'inside' class is c1: True