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