Что такое протокол дескрипторов
Python
Middle
Без компании
Что такое протокол дескрипторов
Ответы
Протокол дескрипторов в Python — это способ управления доступом к атрибутам объекта через методы `__get__`, `__set__` и `__delete__`. Дескрипторы позволяют кастомизировать поведение при обращении к атрибутам класса.
Пример:
```
class Descriptor:
def __get__(self, instance, owner):
print(f"Getting from {instance} with owner {owner}")
return instance._value
def __set__(self, instance, value):
print(f"Setting {value} to {instance}")
instance._value = value
class MyClass:
attr = Descriptor() # Дескриптор
obj = MyClass()
obj.attr = 42 # Вызовет __set__
print(obj.attr) # Вызовет __get__
```
Дескрипторы бывают:
- **Non-data** (только `__get__`) — например, `@property`
- **Data** (есть `__set__`/`__delete__`) — например, `@property.setter`
Используются в ORM, валидации, ленивых вычислениях.