__get__(self, obj, objtype) вызывается при чтении атрибута — obj.attr. __set__(self, obj, value) — при записи — obj.attr = value. __delete__(self, obj) — при удалении — del obj.attr. Если дескриптор определяет только __get__ — это non-data descriptor (функции, classmethod). Если __get__ + __set__ — data descriptor (property). Data descriptor имеет приоритет над instance __dict__, non-data — нет. Это объясняет почему методы можно «перекрыть» атрибутом экземпляра, а property — нет.
Как работают __get__, __set__, __delete__?
Senior
124 просмотровAFK Offer AI
Что такое Celery Canvas?