Встречается на собеседованиях • сегодня
Как создать свой дескриптор
Дескриптор — это класс, реализующий протокол дескриптора (__get__, __set__, __delete__). Он позволяет контролировать доступ к атрибутам другого класса.
Пример дескриптора для валидации возраста:
python
class AgeValidator:
def __set_name__(self, owner, name):
self.name = name
def __get__(self, instance, owner):
return instance.__dict__.get(self.name)
text
def __set__(self, instance, value):
if not isinstance(value, int) or value < 0:
raise ValueError("Age must be a positive integer")
instance.__dict__[self.name] = valueclass Person:
age = AgeValidator()
text
def __init__(self, age):
self.age = agetext
Ключевые моменты:
1. `__get__` вызывается при чтении атрибута
2. `__set__` вызывается при присвоении значения
3. `__delete__` (необязательный) вызывается при `del`
4. `__set_name__` (Python 3.6+) автоматически получает имя атрибута
Дескрипторы бывают data (реализуют `__set__`) и non-data (только `__get__`). Они позволяют элегантно реализовать свойства, валидацию, ленивые вычисления.
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы