Caché de objetos de Python

Intenté un poco de código pero parece causar problemas:

class Page:
    cache = []


    """ Return cached object """
    def __getCache(self, title):
        for o in Page.cache:
            if o.__searchTerm == title or o.title == title:
                return o
        return None


    """ Initilize the class and start processing """
    def __init__(self, title, api=None):
        o = self.__getCache(title)
        if o:
            self = o
            return
        Page.cache.append(self)

        # Other init code
        self.__searchTerm = title
        self.title = self.someFunction(title)

Entonces trato de

a = Page('test')
b = Page('test')

print a.title # works
print b.title # AttributeError: Page instance has no attribute 'title'

¿Qué hay de malo con este bit de código? ¿Por qué no funciona? ¿Hay alguna manera de hacerlo funcionar? De no ser así, ¿cómo hago para el usuario final almacenar en caché los objetos de forma fácil y transparente?

Respuestas a la pregunta(3)

Su respuesta a la pregunta