Дескриптор в 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__, которые позволяют нам получить и установить значение этого атрибута внутри экземпляра класса.