El diccionario de variables de clase no se guarda con pickle.dump en Python 2.7
Estoy utilizando pickle para guardar un gráfico de objetos volcando la raíz. Cuando carga la raíz, tiene todas las variables de instancia y nodos de objetos conectados. Sin embargo, estoy guardando todos los nodos en una variable de clase de tipo diccionario. La variable de clase está llena antes de ser guardada, pero después de haber eliminado los datos, está vacía.
Aquí está la clase que estoy usando:
class Page():
__crawled = {}
def __init__(self, title = '', link = '', relatedURLs = []):
self.__title = title
self.__link = link
self.__relatedURLs = relatedURLs
self.__related = []
@property
def relatedURLs(self):
return self.__relatedURLs
@property
def title(self):
return self.__title
@property
def related(self):
return self.__related
@property
def crawled(self):
return self.__crawled
def crawl(self,url):
if url not in self.__crawled:
webpage = urlopen(url).read()
patFinderTitle = re.compile('<title>(.*)</title>')
patFinderLink = re.compile('<link rel="canonical" href="([^"]*)" />')
patFinderRelated = re.compile('<li><a href="([^"]*)"')
findPatTitle = re.findall(patFinderTitle, webpage)
findPatLink = re.findall(patFinderLink, webpage)
findPatRelated = re.findall(patFinderRelated, webpage)
newPage = Page(findPatTitle,findPatLink,findPatRelated)
self.__related.append(newPage)
self.__crawled[url] = newPage
else:
self.__related.append(self.__crawled[url])
def crawlRelated(self):
for link in self.__relatedURLs:
self.crawl(link)
Lo guardo como tal:
with open('medTwiceGraph.dat','w') as outf:
pickle.dump(root,outf)
y lo cargué como tal:
def loadGraph(filename): #returns root
with open(filename,'r') as inf:
return pickle.load(inf)
root = loadGraph('medTwiceGraph.dat')
Todos los datos se cargan, excepto la variable de clase __crawled.
¿Qué estoy haciendo mal?