Встречается на собеседованиях • сегодня
Приходилось ли писать собственные дескрипторы
Да, приходилось. Дескрипторы в Python — это мощный механизм для управления доступом к атрибутам. Они реализуются через протокол дескрипторов (__get__, __set__, __delete__). Чаще всего используются для валидации данных, ленивых вычислений или управления доступом.
Пример дескриптора для валидации возраста:
python
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
text
def __get__(self, instance, owner):
return instance.__dict__.get('age')class Person:
age = AgeValidator()
p = Person()
p.age = 25 # OK
p.age = -5 # ValueError
text
Ключевые моменты:
1. Дескрипторы бывают data (реализуют `__set__`) и non-data (только `__get__`)
2. `__get__` принимает instance и owner (класс)
3. Для хранения значения лучше использовать `instance.__dict__`
4. Дескрипторы работают только на уровне класса
Часто используются в ORM (например, Django модели) и для реализации property-like поведения с повторным использованием кода.
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы