Что такое дескрипторы в Python?

Опубликован: 09.08.2024 37

Дескрипторы — это объекты, которые реализуют один или несколько специальных методов (__get__(), __set__() и __delete__()), позволяющих контролировать доступ к атрибутам класса и определять дополнительное поведение при их получении, изменении или удалении.

Одним из распространенных примеров использования дескрипторов является валидация данных.

Пример создания дескриптора (MinValueDescriptor), который проверяет, что значение атрибута класса (MyClass) не меньше заданного минимального порога.

Для использования дескриптора нужно создать атрибут класса с его экземпляром.

class MinValueDescriptor:
    def __init__(self, min_value):
        self.min_value = min_value

    def __get__(self, instance, owner):
        return instance._value

    def __set__(self, instance, value):
        if value < self.min_value:
            raise ValueError(f"Значение должно быть не менее {self.min_value}")
        instance._value = value


class MyClass:
    value = MinValueDescriptor(10)


obj = MyClass()
obj.value = 15  # Все в порядке, значение больше 10
print(obj.value)
15

obj.value = 5   # Вызовет ошибку ValueError
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 10, in __set__
ValueError: Значение должно быть не менее 10

Похожие посты

Что такое метакласс в Python?

В чем разница между методами экземпляра, методами класса и статическими методами в Python?

В чем разница между статическими и динамическими атрибутами класса?

Как создать класс и объект класса в Python

Комментариев нет.