【发布时间】:2014-03-26 11:10:49
【问题描述】:
我正在尝试做类似于this 的事情,但我没有得到预期的结果。 这是我的代码
import pickle
def saveclass(objects):
f = file(objects[0].name, 'wb')
for obj in objects:
p = pickle.Pickler(f)
p.dump(obj)
f.close()
def loadclass(name, size):
f = file(name, 'rb')
objlist = []
p = pickle.Unpickler(f)
for obj in range(size):
objlist.append(p.load())
f.close()
return objlist
class class1(object):
def __init__(self, name):
self.name = name
class class2(object):
def __init__(self, name, otherclass):
self.name = name
self.otherclass = otherclass
c1 = class1("class1")
c2 = class2("class2", c1)
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 == c1
print 'saving classes'
saveclass([c1, c2])
print 'Reloading classes'
clist = loadclass("class1", 2)
c1 = clist[0]
c2 = clist[1]
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 == c1
print id(c2.otherclass) == id(c1)
未腌制的对象不一样。我错过了什么吗?
如果 otherclass 是其他类的列表,我应该做一些不同的事情吗?
【问题讨论】:
-
“未腌制的对象不一样”是什么意思?
-
加载前的class“里面”class2是一个名为“class1”的class1对象。加载“内部”类后,class2 与加载的 class1 不同。