Зачем нужен дескриптор
Python
Middle
Без компании
Зачем нужен дескриптор
Ответы
Дескрипторы в Python позволяют управлять доступом к атрибутам класса, реализуя протокол `__get__`, `__set__` и `__delete__`. Они полезны для:
- **Валидации данных** — контроль значений атрибутов.
- **Ленивых вычислений** — вычисление значения только при обращении.
- **Кэширования** — хранение результатов дорогостоящих операций.
- **Логирования** — отслеживание доступа к атрибутам.
Пример:
```
class PositiveNumber:
def __set__(self, obj, value):
if value <= 0:
raise ValueError("Число должно быть положительным")
obj._value = value
def __get__(self, obj, owner):
return obj._value
class Order:
price = PositiveNumber() # Дескриптор
order = Order()
order.price = 100 # ОК
order.price = -50 # ValueError
```
Дескрипторы делают код чище, инкапсулируя логику работы с атрибутами.