Dicionário de variáveis de classe não salvando com pickle.dump no python 2.7
Eu estou usando pickle para salvar um gráfico de objeto, despejando a raiz. Quando eu carrego a raiz, ela tem todas as variáveis de instância e os nós de objetos conectados. No entanto, estou salvando todos os nós em uma variável de classe do tipo dicionário. A variável de classe está cheia antes de ser salva, mas depois que eu desarripar os dados, ela fica vazia.
Aqui está a classe que estou 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)
Eu salvei assim:
with open('medTwiceGraph.dat','w') as outf:
pickle.dump(root,outf)
e eu carrego assim:
def loadGraph(filename): #returns root
with open(filename,'r') as inf:
return pickle.load(inf)
root = loadGraph('medTwiceGraph.dat')
Todos os dados são carregados, exceto pela variável de classe __crawled.
O que estou fazendo de errado?