Я пытаюсь использовать декоратор @property
в Python для диктанта в классе.Идея состоит в том, что я хочу, чтобы определенное значение (назовите его 'message') было очищено после обращения к нему.Но я также хочу, чтобы другое значение (назовите его 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
не работает так, как я ожидал бы, когда речь идет о диктантах, но, может быть, я делаю что-то еще в корне неправильное?
Кроме того, я знаю, что могу просто использовать отдельные значениякласс.Но это реализовано как сеанс в веб-приложении, и мне нужно, чтобы он был диктом.Я мог бы либо заставить это работать, либо сделать весь объект сеанса, чтобы притвориться, что это диктат, или использовать отдельные переменные и взломать его на работоспособность в остальной части кода.Я бы предпочел просто заставить это работать.