Sobes.tech
Back to questions
Junior — Middle
53

Имели ли вы опыт создания собственных дескрипторов для объектов или классов?

Answer from AI

sobes.tech AI

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

Пример простого дескриптора, который валидирует, что присваиваемое значение — положительное число:

class PositiveNumber:
    def __init__(self):
        self._value = 0

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

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

class Product:
    price = PositiveNumber()

p = Product()
p.price = 100  # работает
# p.price = -10  # вызовет ValueError

Такой подход позволяет централизованно контролировать логику доступа и валидации атрибутов.