Comments 8
Отличная статья! Особенно ценно объяснение через практику - пример с DoubledNumber наглядно показывает типичную ошибку (хранение данных в дескрипторе вместо экземпляра) и правильное решение.
Главный инсайт: дескрипторы - это не просто "альтернатива property", а фундаментальный механизм работы Python. Понимание алгоритма поиска атрибутов (приоритет data-дескрипторов → dict экземпляра → non-data дескрипторы) объясняет, почему методы, property и другие встроенные механизмы работают именно так.
Практический пример с LazyProperty показывает реальную пользу: переиспользование логики "ленивой инициализации" между разными классами без дублирования кода. Это то, что сложно сделать через property без костылей.
Отличная статья! 👍
Чётко раскрыта суть дескрипторов и то, как они работают «под капотом» через методы get, set и delete. Особенно понравилось объяснение различий между data и non-data дескрипторами — это момент, который часто упускают даже опытные разработчики.
Хорошо, что показан пример с хранением данных в instance.__dict__, а не внутри самого дескриптора — это действительно частая ошибка.
Для полноты картины, думаю, можно было бы добавить немного о взаимодействии дескрипторов с getattribute и super(), а также пару слов о производительности и примерах из реальных фреймворков вроде Django ORM или SQLAlchemy.
В целом — отличное введение в одну из самых «магических» частей Python, которая лежит в основе @property, методов класса и других встроенных инструментов. Спасибо автору! 👏
Любопытно, за что так активно минусуют комментарии?
Честно пытался осилить - ничего не понял. Для тех кто ничего про это не знает - ничего не понятно, а для тех кто знает это совсем не нужно
Занятно, похоже на гибрид property и mixin. Для чего сделано именно так, мне не очень понятно, но я питоном не так давно начал интересоваться и не по своей воле...
Что такое дескрипторы в Python и почему вам следует о них знать