Встроенные декораторы

1. @staticmethod — статический метод

  • Что делает: превращает метод класса в обычную функцию, которая не получает self или cls автоматически.

  • Когда применять: метод логически относится к классу, но не зависит от состояния экземпляра или самого класса.

class MathUtils:
    @staticmethod
    def add(a, b):
        return a + b

print(MathUtils.add(2, 3))  # 5

💡 В автотестах: удобно для хелперов, например, генераторов тестовых данных.


2. @classmethod — метод класса

  • Что делает: передаёт в метод ссылку на сам класс (cls) вместо экземпляра.

  • Когда применять: нужно работать с классом в целом (например, альтернативные конструкторы).

class User:
    def __init__(self, name):
        self.name = name

    @classmethod
    def from_fullname(cls, fullname):
        first, last = fullname.split()
        return cls(first)

user = User.from_fullname("John Smith")
print(user.name)  # John

💡 В автотестах: полезно для фабрик объектов Page Object.


3. @property — превращает метод в атрибут

  • Что делает: позволяет вызывать метод как обычное свойство без скобок.

  • Когда применять: когда нужно "ленивое" вычисление значения или валидация при установке.

💡 В автотестах: удобно, когда данные должны выглядеть как атрибуты, а не методы.


4. @<property>.setter и @<property>.deleter

  • Что делает: определяет логику при изменении или удалении свойства.


5. @functools.lru_cache (технически из functools, но часто относят к "встроенным")

  • Что делает: кеширует результат функции.

  • Когда применять: если функция часто вызывается с одними и теми же аргументами.

💡 В тестах: удобно при работе с медленными API для повторных запросов.


6. @dataclass (из dataclasses)

  • Что делает: автоматически создаёт __init__, __repr__, __eq__ и другие методы для класса с атрибутами.

💡 В тестах: быстро описывать структуры тестовых данных.


7. @abstractmethod (из abc)

  • Что делает: заставляет наследников обязательно реализовать метод.

💡 В тестах: удобно в архитектуре, где есть общий интерфейс тестов или страниц.

Last updated