Что делает метод __delete__ в дескрипторах?

Метод дескриптора __delete__(self, instance) вызывается при del instance.attribute и определяет удаление управляемого атрибута. Это не финализатор объекта и не метод __del__.

Короткий ответ

Что ответить на собеседовании

Метод дескриптора delete(self, instance) вызывается при del instance.attribute и определяет удаление управляемого атрибута. Это не финализатор объекта и не метод del.

Подробный разбор

Ответ с пояснениями

Метод дескриптора delete(self, instance) вызывается при del instance.attribute и определяет удаление управляемого атрибута. Это не финализатор объекта и не метод del.

Дескриптор хранится в классе, а полученный instance позволяет изменить или удалить соответствующее состояние конкретного объекта. Например, можно очистить внутреннее поле либо запретить удаление, выбросив AttributeError. Наличие __delete__ относит дескриптор к data descriptors, что влияет на приоритет доступа. Не нужно ожидать, что Python сам удалит данные из выбранного вами хранилища: это поведение реализует метод.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее