Какие знаешь встроенные декораторы
Python
Middle
Без компании
Какие знаешь встроенные декораторы
Ответы
В Python есть несколько встроенных декораторов, вот основные:
- `@property` – превращает метод в атрибут класса (геттер):
```
class Circle:
def __init__(self, radius):
self._radius = radius
@property
def radius(self):
return self._radius
```
- `@classmethod` – делает метод методом класса (первый аргумент `cls`):
```
class MyClass:
@classmethod
def from_string(cls, string):
return cls(int(string))
```
- `@staticmethod` – делает метод статическим (нет доступа к `self` или `cls`):
```
class Math:
@staticmethod
def add(a, b):
return a + b
```
- `@functools.cache` (Python 3.9+) – кеширует результаты функции:
```
import functools
@functools.cache
def factorial(n):
return n * factorial(n-1) if n else 1
```
- `@functools.lru_cache` – кеширует с ограничением по размеру:
```
@functools.lru_cache(maxsize=32)
def get_data(key):
return expensive_operation(key)
```