Sobes.tech
Junior — Middle
100

Können Sie erklären, was der Begriff 'Descriptor' im Kontext von Python bedeutet und wie er funktioniert?

Unternehmen wurden gefragt
AstonAston

Antwort von AI

sobes.tech KI

В 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.