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