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

Как работает дескриптор в 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 = name

class MyModel(models.Model):
number = PositiveNumber()

text

Ключевые моменты:
1. `__get__` вызывается при обращении к атрибуту
2. `__set__` вызывается при присваивании значения
3. `__delete__` вызывается при удалении атрибута
4. `__set_name__` (Python 3.6+) автоматически сохраняет имя атрибута

Django использует дескрипторы для:
- Преобразования данных БД ↔ Python
- Валидации значений
- Ленивых вычислений (например, `@cached_property`)
- Управления доступом к полям моделей
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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