Приходилось ли писать собственные дескрипторы

Python Middle Без компании
Приходилось ли писать собственные дескрипторы
Ответы
Да, приходилось. Дескрипторы в Python — это мощный механизм для управления доступом к атрибутам. Они реализуются через протокол дескрипторов (`__get__`, `__set__`, `__delete__`). Чаще всего используются для валидации данных, ленивых вычислений или управления доступом. Пример дескриптора для валидации возраста: ``` class AgeValidator: def __set__(self, instance, value): if not isinstance(value, int) or value < 0: raise ValueError("Age must be a positive integer") instance.__dict__['age'] = value def __get__(self, instance, owner): return instance.__dict__.get('age') class Person: age = AgeValidator() p = Person() p.age = 25 # OK p.age = -5 # ValueError ``` Ключевые моменты: - Дескрипторы бывают data (реализуют `__set__`) и non-data (только `__get__`) - `__get__` принимает instance и owner (класс) - Для хранения значения лучше использовать `instance.__dict__` - Дескрипторы работают только на уровне класса Часто используются в ORM (например, Django модели) и для реализации property-like поведения с повторным использованием кода.