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?