Что такое @property
Python
Middle
Aston
Что такое @property
Ответы
`@property` — это декоратор в Python, который позволяет превратить метод класса в атрибут, доступный для чтения. Он используется для инкапсуляции, контроля доступа и добавления логики при получении/изменении/удалении атрибута.
**Пример:**
```
class Circle:
def __init__(self, radius):
self._radius = radius # защищённый атрибут
@property
def radius(self):
print("Доступ к радиусу")
return self._radius
@radius.setter
def radius(self, value):
if value < 0:
raise ValueError("Радиус не может быть отрицательным")
self._radius = value
circle = Circle(5)
print(circle.radius) # выведет "Доступ к радиусу" и 5
circle.radius = 10 # работает через setter
```
**Ключевые моменты:**
- `@property` делает метод атрибутом (`obj.attr` вместо `obj.attr()`).
- Можно добавить `@attr.setter` и `@attr.deleter` для контроля записи/удаления.
- Полезно для валидации, ленивых вычислений или совместимости с legacy-кодом.