Back to questions
Junior — Middle
62
Какие механизмы реализованы внутри декоратора @property в Python для управления доступом к атрибутам?
Answer from AI
sobes.tech AI
Декоратор @property в Python реализует механизм управления доступом к атрибутам через методы, позволяя обращаться к ним как к обычным свойствам.
Внутри @property создаётся объект-описатель (descriptor), который реализует методы:
__get__— вызывается при чтении свойства, возвращает значение через геттер.__set__— вызывается при присвоении значения, если определён сеттер.__delete__— вызывается при удалении свойства, если определён делитер.
Это позволяет инкапсулировать логику получения и установки значения, например, для валидации или вычисления на лету.
Пример:
class Person:
def __init__(self, name):
self._name = name
@property
def name(self):
return self._name
@name.setter
def name(self, value):
if not value:
raise ValueError("Имя не может быть пустым")
self._name = value
p = Person("Иван")
print(p.name) # вызовет __get__
p.name = "Пётр" # вызовет __set__