Встречается на 1% собеседований по Python
Как работает дескриптор в Django
Дескриптор в Django — это объект, который определяет методы __get__, __set__ или __delete__ для управления доступом к атрибутам модели. Django использует дескрипторы для реализации полей моделей (Field), свойств (@property) и методов (@cached_property).
Пример дескриптора для валидации значения:
python
class PositiveNumber:
def __set__(self, instance, value):
if value < 0:
raise ValueError("Number must be positive")
instance.__dict__[self.name] = value
text
def __set_name__(self, owner, name):
self.name = nameclass MyModel(models.Model):
number = PositiveNumber()
text
Ключевые моменты:
1. `__get__` вызывается при обращении к атрибуту
2. `__set__` вызывается при присваивании значения
3. `__delete__` вызывается при удалении атрибута
4. `__set_name__` (Python 3.6+) автоматически сохраняет имя атрибута
Django использует дескрипторы для:
- Преобразования данных БД ↔ Python
- Валидации значений
- Ленивых вычислений (например, `@cached_property`)
- Управления доступом к полям моделей
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
Похожие вопросы
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы