March 14, 2023

Дескриптор в Python | коротко-понятно

Дескриптор в Python - это объект, определяющий, как должно происходить взаимодействие с атрибутом класса. Для создания дескриптора в Python необходимо создать класс с тремя методами: __get__, __set__ и __delete__.

Метод __get__ вызывается при обращении к атрибуту, чтобы получить его значение, метод __set__ вызывается при попытке установить значение атрибуту, а метод __delete__ вызывается при удалении атрибута.

Вот пример кода дескриптора в Python:

class Descriptor:
    def __init__(self, name):
        self.name = name

    def __get__(self, instance, owner):
        return instance.__dict__[self.name]

    def __set__(self, instance, value):
        instance.__dict__[self.name] = value

    def __delete__(self, instance):
        del instance.__dict__[self.name]

class MyClass:
    my_attr = Descriptor('my_attr')

my_obj = MyClass()
my_obj.my_attr = 10
print(my_obj.my_attr)  # выведет 10

В данном примере класс Descriptor является дескриптором атрибута my_attr класса MyClass. Методы __get__, __set__ и __delete__ определяют, как должно происходить обращение к этому атрибуту.

При выполнении кода выше мы создаем объект класса MyClass, устанавливаем значение атрибута my_attr в 10 и выводим его значение на экран. Благодаря дескриптору, при обращении к атрибуту my_attr мы воспользовались методами __get__ и __set__, которые позволяют нам получить и установить значение этого атрибута внутри экземпляра класса.

В данном примере класс Descriptor является дескриптором атрибута my_attr класса MyClass. Методы __get__, __set__ и __delete__ определяют, как должно происходить обращение к этому атрибуту.

При выполнении кода выше мы создаем объект класса MyClass, устанавливаем значение атрибута my_attr в 10 и выводим его значение на экран. Благодаря дескриптору, при обращении к атрибуту my_attr мы воспользовались методами __get__ и __set__, которые позволяют нам получить и установить значение этого атрибута внутри экземпляра класса.