Что такое дескрипторы (descriptors) в Python? Как с их помощью реализовать аналог встроенного декоратора @property?

В Python дескриптор — это объект, который управляет доступом к атрибутам другого объекта через методы get, set и delete.

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

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

В Python дескриптор — это объект, который управляет доступом к атрибутам другого объекта через методы get, set и delete. Чтобы реализовать собственный дескриптор, нужно создать класс с одним или несколькими из этих методов.

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

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

В Python дескриптор — это объект, который управляет доступом к атрибутам другого объекта через методы __get__, __set__ и __delete__. Чтобы реализовать собственный дескриптор, нужно создать класс с одним или несколькими из этих методов.

Пример простого дескриптора, который контролирует доступ к атрибуту:

class Descriptor:
    def __init__(self, name=None):
        self.name = name

    def __get__(self, instance, owner):
        return instance.__dict__.get(self.name)

    def __set__(self, instance, value):
        print(f"Устанавливаем {self.name} в {value}")
        instance.__dict__[self.name] = value

class MyClass:
    attr = Descriptor('attr')

obj = MyClass()
obj.attr = 42  # Выведет: Устанавливаем attr в 42
print(obj.attr)  # 42

Таким образом, дескрипторы позволяют контролировать поведение атрибутов при чтении, записи и удалении.

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

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

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

Подробнее