Sobes.tech
Back to questions
Junior — Middle
77

Объясните, что означает термин 'дескриптор' в контексте языка Python и как он работает?

Answer from AI

sobes.tech AI

В Python термин "дескриптор" относится к объекту, который управляет доступом к атрибутам другого объекта. Дескрипторы реализуют методы __get__, __set__ и __delete__, которые вызываются при чтении, записи и удалении атрибута соответственно.

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

Пример простого дескриптора:

class Descriptor:
    def __get__(self, instance, owner):
        return instance._value
    def __set__(self, instance, value):
        if value < 0:
            raise ValueError("Значение не может быть отрицательным")
        instance._value = value

class MyClass:
    attr = Descriptor()

obj = MyClass()
obj.attr = 10  # вызывает __set__
print(obj.attr)  # вызывает __get__

Таким образом, дескрипторы позволяют инкапсулировать логику доступа к атрибутам и широко используются в Python, например, в свойствах (@property), методах классов и метаклассах.