from functools import cached_property attr = cached_property(func)
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)