Что такое дескриптор (protocol descriptors) в Python?
Уровень: Senior
Ответ
Дескриптор – это объект с методами протокола дескрипторов: __get__, __set__ и/или __delete__. Если класс определяет эти методы, то его экземпляры могут выступать атрибутами других классов, поведение при доступе к которым переопределено. Например, property – реализован как дескриптор (имеет __get__ и __set__). Когда вы обращаетесь к свойству экземпляра, Python вызывает __get__ дескриптора. Дескрипторы позволяют контролировать доступ к атрибутам классов извне шаблонно – используется в реализации property, методов (function является дескриптором) и т.д.