Словарь переменных класса не сохраняется с pickle.dump в Python 2.7
Я использую pickle для сохранения графа объектов путем сброса корня. Когда я загружаю корень, у него есть все переменные экземпляра и узлы связанных объектов. Однако я сохраняю все узлы в переменной класса словаря типа. Переменная класса переполнена перед сохранением, но после того, как я распаковываю данные, она пуста.
Вот класс, который я использую:
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)
Я сохраняю это так:
with open('medTwiceGraph.dat','w') as outf:
pickle.dump(root,outf)
и я загружаю это так:
def loadGraph(filename): #returns root
with open(filename,'r') as inf:
return pickle.load(inf)
root = loadGraph('medTwiceGraph.dat')
Все данные загружаются, за исключением переменной класса __crawled.
Что я делаю неправильно?