Как работают __get__, __set__, __delete__?

Senior
124 просмотров
AFK Offer AI

__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 — нет.

Следующий вопрос

Что такое Celery Canvas?