Back to questions
Aston
Junior — Middle
74
Можете ли вы объяснить, что означает термин 'дескриптор' в контексте Python и как он работает?
Companies where asked
Answer from AI
sobes.tech AI
В Python дескриптор — это объект, который управляет доступом к атрибутам другого объекта. Он реализует один или несколько специальных методов: __get__, __set__ и __delete__. Когда атрибут с дескриптором запрашивается, устанавливается или удаляется, вызываются соответствующие методы дескриптора.
Это позволяет контролировать поведение атрибутов, например, реализовать вычисляемые свойства, валидацию значений или ленивую инициализацию.
Пример простого дескриптора для проверки типа значения:
class Typed:
def __init__(self, name, expected_type):
self.name = name
self.expected_type = expected_type
def __get__(self, instance, owner):
return instance.__dict__[self.name]
def __set__(self, instance, value):
if not isinstance(value, self.expected_type):
raise TypeError(f"Ожидался тип {self.expected_type.__name__}")
instance.__dict__[self.name] = value
class Person:
age = Typed('age', int)
p = Person()
p.age = 30 # работает
# p.age = 'тридцать' # вызовет TypeError
Таким образом, дескрипторы — мощный инструмент для управления доступом к атрибутам в Python.