Sobes.tech
Junior — Middle
56

Можешь назвать встроенные в Python декораторы и кратко объяснить их назначение?

Answer from AI

sobes.tech AI

В Python есть несколько встроенных декораторов, которые упрощают работу с классами и функциями:

  • @staticmethod — превращает метод класса в статический, который не получает автоматически ссылку на экземпляр (self) или класс (cls). Используется для утилитарных функций внутри класса.

  • @classmethod — метод получает первым аргументом класс (cls), а не экземпляр. Позволяет работать с классом, например, создавать альтернативные конструкторы.

  • @property — превращает метод в свойство, позволяя обращаться к нему как к атрибуту без скобок, что удобно для инкапсуляции доступа к данным.

  • @functools.lru_cache — кэширует результаты вызова функции для ускорения повторных вызовов с теми же аргументами.

Пример использования @property:

class Circle:
    def __init__(self, radius):
        self._radius = radius

    @property
    def area(self):
        return 3.1415 * self._radius ** 2

c = Circle(5)
print(c.area)  # Вычисляется как свойство, без скобок

Эти декораторы помогают писать более чистый и выразительный код.