Sobes.tech
Back to questions
Junior — Middle
65

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

Answer from AI

sobes.tech AI

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

Пример использования дескриптора для валидации значения:

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

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

class Account:
    balance = PositiveNumber()

acc = Account()
acc.balance = 100  # работает
acc.balance = -50  # вызовет ValueError

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