18 / 22
Что такое descriptor protocol (`__get__`/`__set__`/`__delete__`) и как через него работает `@property`?
Descriptor — класс с методом __get__ (и опционально __set__/__delete__), который перехватывает доступ к атрибуту через owner class (а не instance). Если есть __set__ или __delete__ — это data descriptor, имеет приоритет над __dict__ инстанса. @property, classmethod, staticmethod и slots реализованы как descriptor'ы. ORM-поля (Django, SQLAlchemy) — тоже.