Klassenvariablenwörterbuch wird mit pickle.dump in Python 2.7 nicht gespeichert

Ich verwende pickle, um ein Objektdiagramm zu speichern, indem ich die Wurzel lösche. Wenn ich die Wurzel lade, hat sie alle Instanzvariablen und verbundenen Objektknoten. Ich speichere jedoch alle Knoten in einer Klassenvariablen vom Typ Wörterbuch. Die Klassenvariable ist voll, bevor sie gespeichert wird, aber nachdem ich die Auswahl aufgehoben habe, ist sie leer.

Hier ist die Klasse, die ich benutze:

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)

Ich speichere es so:

with open('medTwiceGraph.dat','w') as outf:
    pickle.dump(root,outf)

und ich lade es wie folgt:

def loadGraph(filename): #returns root
    with open(filename,'r') as inf:
        return pickle.load(inf)

root = loadGraph('medTwiceGraph.dat')

Alle Daten mit Ausnahme der Klassenvariablen __crawled werden geladen.

Was mache ich falsch?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage