Sobes.tech
Back to questions
Junior — Middle
67

Объясните назначение и работу метода __set__() в классе-дескрипторе Python

Answer from AI

sobes.tech AI

Метод __set__() в классе-дескрипторе Python отвечает за перехват присваивания значения атрибуту объекта. Когда у объекта, у которого атрибут реализован через дескриптор, происходит присваивание, вызывается именно этот метод.

Он принимает три параметра:

  • self — экземпляр дескриптора,
  • instance — объект, у которого устанавливается атрибут,
  • value — новое значение.

Пример использования:

class Descriptor:
    def __set__(self, instance, value):
        print(f"Устанавливаем значение {value} для {instance}")
        instance._value = value

class MyClass:
    attr = Descriptor()

obj = MyClass()
obj.attr = 42  # вызовет Descriptor.__set__(obj, 42)

Таким образом, __set__() позволяет контролировать процесс установки значения, например, для валидации, логирования или управления доступом.