Встречается на собеседованиях • сегодня

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

Да, приходилось. Дескрипторы в 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 поведения с повторным использованием кода.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы