Дескриптор, разрешающий установить значение только один раз
Python
Senior
Авито
01.01.2025
Реализуйте дескриптор `Once`, который разрешает установить значение атрибута только один раз. Повторная попытка вызывает `AttributeError`.
Ответы
Решение
```python
class Once:
def __set_name__(self, owner, name):
self.private = '_' + name
def __get__(self, obj, objtype=None):
return getattr(obj, self.private, None)
def __set__(self, obj, value):
if hasattr(obj, self.private):
raise AttributeError('Value already set')
setattr(obj, self.private, value)
```