Usando el decorador @property en dicts

Estoy tratando de usar Python@property decorador en un dict en una clase. La idea es que quiero que se borre un cierto valor (llámelo 'mensaje') después de acceder a él. Pero también quiero que otro valor (llámelo 'last_message') contenga el último mensaje establecido y lo mantenga hasta que se establezca otro mensaje. En mi opinión, este código funcionaría:

>>> class A(object):
...     def __init__(self):
...             self._b = {"message": "", 
...                        "last_message": ""}
...     @property
...     def b(self):
...             b = self._b
...             self._b["message"] = ""
...             return b
...     @b.setter
...     def b(self, value):
...             self._b = value
...             self._b["last_message"] = value["message"]
...
>>>

Sin embargo, no parece:

>>> a = A()
>>> a.b["message"] = "hello"
>>> a.b["message"]
''
>>> a.b["last_message"]
''
>>>

¿No estoy seguro de lo que he hecho mal? Me parece como@property no funciona como lo esperaría en los dictados, pero ¿tal vez estoy haciendo algo fundamentalmente incorrecto?

Además, sé que podría usar valores individuales en la clase. Pero esto se implementa como una sesión en una aplicación web y necesito que sea un dict. Podría hacer que esto funcione, o hacer que toda la sesión se oponga para fingir que es un dict, o usar variables individuales y piratearlo para que funcione en el resto de la base de código. Preferiría que esto funcione.

Respuestas a la pregunta(2)

Su respuesta a la pregunta