1
나는 this과 비슷한 것을하려고하지만 기대했던 결과를 얻지 못한다. 내 코드는 다음과 같습니다Pickle linked objects part 2
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)
언 피클 된 개체가 동일하지 않습니다. 내가 놓친 게 있니?
다른 클래스가 다른 클래스의 목록 인 경우 다른 조치를 취해야합니까?
당신은 unpickled 객체가 동일하지 않습니다 "의미합니까 "? – laike9m
로드 전의 클래스 "inside"class2는 "class1"이라는 이름의 class1 객체입니다. "inside"클래스를로드 한 후에 class2는로드 된 클래스 1과 다릅니다. – Yannis