Что делает метод __get__ в дескрипторах?

__get__ определяет поведение чтения атрибута-дескриптора. Он получает экземпляр и его класс и может вычислить значение, вернуть связанный метод или предоставить сам дескриптор при обращении через класс.

Короткий ответ

Что ответить на собеседовании

get определяет поведение чтения атрибута-дескриптора. Он получает экземпляр и его класс и может вычислить значение, вернуть связанный метод или предоставить сам дескриптор при обращении через класс.

Подробный разбор

Ответ с пояснениями

get определяет поведение чтения атрибута-дескриптора. Он получает экземпляр и его класс и может вычислить значение, вернуть связанный метод или предоставить сам дескриптор при обращении через класс.

Сигнатура обычно выглядит как get(self, instance, owner=None). При obj.attr instance — obj; при Class.attr это None. Дескриптор должен находиться в классе, а не просто быть значением поля экземпляра. Приоритет зависит от наличия set или delete: data descriptor имеет преимущество перед dict экземпляра, non-data descriptor может быть перекрыт обычным атрибутом.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее