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