Встречается на собеседованиях • сегодня
Как работает дескриптор в 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
интервью вопросы и ответы