Сообщить об ошибке.

Декоратор @cached_property модуля functools в Python

Кешировать метод класса и преобразовать его в свойство

Синтаксис:

from functools import cached_property

attr = cached_property(func)

Параметры:

Возвращаемое значение:

Описание:

Декоратор @cached_property модуля functools преобразует метод класса в свойство, значение которого вычисляется один раз, а затем кэшируется как обычный атрибут на время срока службы экземпляра класса.

Работает аналогично встроенной функции property() с добавлением кэширования. Полезно для дорогих вычисляемых свойств экземпляров, которые эффективно неизменяемы.

Примечание.
Этот декоратор требует, чтобы атрибут __dict__ в каждом экземпляре был изменяемым словарем. Это означает, что он не будет работать с некоторыми типами, такими как метаклассы и теми, которые указывают __slots__ без включения __dict__ в качестве одного из определенных слотов.

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

from functools import cached_property

class DataSet:
    def __init__(self, sequence_of_numbers):
        self._data = sequence_of_numbers

    @cached_property
    def stdev(self):
        return statistics.stdev(self._data)

    @cached_property
    def variance(self):
        return statistics.variance(self._data)