Метод дескриптора delete(self, instance) вызывается при del instance.attribute и определяет удаление управляемого атрибута. Это не финализатор объекта и не метод del.
Что делает метод __delete__ в дескрипторах?
Метод дескриптора __delete__(self, instance) вызывается при del instance.attribute и определяет удаление управляемого атрибута. Это не финализатор объекта и не метод __del__.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Метод дескриптора delete(self, instance) вызывается при del instance.attribute и определяет удаление управляемого атрибута. Это не финализатор объекта и не метод del.
Дескриптор хранится в классе, а полученный instance позволяет изменить или удалить соответствующее состояние конкретного объекта. Например, можно очистить внутреннее поле либо запретить удаление, выбросив AttributeError. Наличие __delete__ относит дескриптор к data descriptors, что влияет на приоритет доступа. Не нужно ожидать, что Python сам удалит данные из выбранного вами хранилища: это поведение реализует метод.