Опубликован: 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
Комментариев нет.