functools.cached_property

Превращает метод в свойство, значение которого вычисляется один раз и сохраняется в словаре экземпляра.

Сигнатура@functools.cached_property

В отличие от обычного property, cached_property вычисляет значение лишь при первом обращении, а затем возвращает сохранённый результат. Класс должен иметь изменяемый __dict__ (не __slots__).

from functools import cached_property

class Dataset:
    def __init__(self, values):
        self.values = values

    @cached_property
    def total(self):
        print('вычисляю...')
        return sum(self.values)

d = Dataset([1, 2, 3])
print(d.total)   # вычисляю... \n 6
print(d.total)   # 6 (без повторного вычисления)
← Все записи: Модули collections и functools
Поддержать проект