@property
クラスのdictでPythonのデコレータを使用しようとしています。アイデアは、特定の値(「メッセージ」と呼びます)がアクセスされた後にクリアされるようにすることです。ただし、別の値(「last_message」と呼びます)に最後に設定されたメッセージを含め、別のメッセージが設定されるまで保持する必要もあります。私の考えでは、このコードは機能します。
>>> 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"]
...
>>>
ただし、次のようには見えません。
>>> a = A()
>>> a.b["message"] = "hello"
>>> a.b["message"]
''
>>> a.b["last_message"]
''
>>>
何を間違えたのかわかりませんか?口述で期待したようには機能しないように思え@property
ますが、根本的に間違ったことをしているのではないでしょうか。
また、クラスで個々の値を使用できることも知っています。しかし、これはWebアプリケーションのセッションとして実装されており、私はそれがdictである必要があります。これを機能させるか、セッションオブジェクト全体を作成して、それがdictであるかのように見せかけるか、個々の変数を使用して、残りのコードベース全体で機能するようにハッキングすることができます。私はむしろこれを機能させたいだけです。