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

__set__ вызывается при присваивании атрибуту, управляемому дескриптором. Он получает экземпляр и новое значение и может проверить его, преобразовать или сохранить в другом месте.

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

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

set вызывается при присваивании атрибуту, управляемому дескриптором. Он получает экземпляр и новое значение и может проверить его, преобразовать или сохранить в другом месте.

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

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

set вызывается при присваивании атрибуту, управляемому дескриптором. Он получает экземпляр и новое значение и может проверить его, преобразовать или сохранить в другом месте.

Обычная сигнатура — set(self, instance, value). Например, дескриптор возраста может отвергнуть отрицательное значение и записать допустимое в instance.dict['_age']. Нельзя бездумно присваивать тому же публичному атрибуту внутри set: это вызовет рекурсию. Наличие set делает дескриптор data descriptor и даёт ему приоритет перед одноимённым полем экземпляра.

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

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

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

Подробнее