Что делает декоратор @property?
Этот вопрос проверяет знание декоратора @property, который используется для создания методов-доступов (геттеров и сеттеров) в Python.
Короткий ответ
Декоратор @property превращает метод класса в атрибут, который можно получить или установить через стандартный синтаксис атрибутов. Это удобно для контроля доступа к данным и обеспечения инкапсуляции.
Длинный ответ
С помощью @property можно создать геттеры и сеттеры, сохраняя синтаксис работы с атрибутами. Геттер определяется декоратором @property, а сеттер — через одноимённый метод с декоратором @<имя_геттера>.setter.
Пример:
class Circle:
def __init__(self, radius):
self._radius = radius
@property
def radius(self):
return self._radius
@radius.setter
def radius(self, value):
if value > 0:
self._radius = value
else:
raise ValueError("Радиус должен быть положительным")
circle = Circle(5)
print(circle.radius) # 5
circle.radius = 10 # Установка нового значения
print(circle.radius) # 10
# circle.radius = -1 # Ошибка: ValueErrorИспользование @property улучшает читаемость и безопасность, позволяя добавлять логику к доступу и изменению атрибутов без изменения интерфейса класса.