Для чего нужно превращать метод класса в атрибут
Преобразование метода класса в атрибут обычно делают для кэширования результата или упрощения доступа, когда метод не нужно вызывать каждый раз как функцию.
Основные причины
1. Вычислить один раз и использовать как свойство
Если метод возвращает значение, которое зависит только от состояния объекта и не меняется, его можно сделать свойством с помощью
@property.Это убирает круглые скобки при вызове и делает обращение более "атрибутным" — читается как поле.
class Rectangle:
def __init__(self, width, height):
self.width = width
self.height = height
@property
def area(self):
return self.width * self.height
rect = Rectangle(10, 5)
print(rect.area) # 50, без ()Применяется в тестировании, например, для вычисления URL страницы на основе конфигурации.
2. Кэширование (ленивые вычисления)
С помощью
functools.cached_property(Python 3.8+) метод выполняется один раз, а результат сохраняется в атрибут.Это полезно, когда вычисление дорогое (например, запрос в API или БД), и нет смысла повторять его каждый раз.
3. Связывание метода с переменной
Иногда нужно сохранить метод в переменной для удобства передачи в другую функцию, например, как колбэк.
🔹 В автоматизации тестирования
@propertyудобно использовать в Page Object Model для локаторов:
Теперь можно писать:
вместо:
@cached_propertyполезно, если локатор или данные ищутся долго, но не меняются в течение теста.
Last updated
Was this helpful?