Получи случайную криптовалюту за регистрацию!

В прошлый раз мы разобрались, как сделать удобный доступ к пер | DevFM

В прошлый раз мы разобрались, как сделать удобный доступ к первому и последнему элементу объекта users. Для этого использовали динамические атрибуты и реализовали магический метод __getattr__.

При выполнении self.first = "new_user" происходит нежелательное поведение, и атрибут first перестанет указывать на первый элемент.

Для решения проблемы сделаем атрибуты first и second read only. Для этого определим магический метод __setattr__. Обратите внимание: __getattr__ вызывается, только если искомого атрибута нет, а метод __setattr__ вызывается каждый раз при присваивании значения атрибуту.

При попытке присвоить значение атрибуту проверяется содержится ли он в shortcut_names. Если содержится, то порождается исключение. Если не содержится, вызывается родительский __setattr__.
#codereview