I am still pretty new to Python and even newer to pickling. I have a class Vertex(ScatterLayout)
with a __getnewargs__()
:
def __getnewargs__(self):
return (self.pos, self.size, self.idea.text)
My understanding is that this will cause the pickle to pickle the object from __getnewargs__()
rather than the object's dictionary.
The pickle is called in the following method (in a different class MindMapApp(App)
):
def save(self):
vertices = self.mindmap.get_vertices()
edges = self.mindmap.get_edges()
output = open('mindmap.pkl', 'wb')
#pickle.dump(edges, output, pickle.HIGHEST_PROTOCOL)
pickle.dump(vertices, output, pickle.HIGHEST_PROTOCOL)
output.close()
When I call the save()
method I get the following error:
pickle.PicklingError: Can't pickle <type 'weakref'>: it's not found as __builtin__.weakref
What am I missing or not understanding? I have also tried implementing the __getstate__()
/ __setstate__(state)
combination, with the same result.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…