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), методах классов и метаклассах.