TGTGInsighttelegram intelligenceLIVE / telegram public index
← Python Заметки
Python Заметки avatar

TGINSIGHT POST

Post #25

@pythonotes

Python Заметки

Прегледи438Број на прегледи
Објавено24 јан.24.01.2020 г., 09:00
Содржина

Содржина на објавата

В предыдущем посте⬆️ был пример кеширования функции. В стандартной библиотеке есть еще один способ, но для классов. Это functools.cached_property (Python3.8+). Логика работы точно такая же, но: - он предназначен только для метода класса. - аналогичен декоратору property, то есть мы получим не функцию а свойство класса. - не принимает аргументов (кроме self), так же как и property. - кеш сохраняет в атрибутах класса (внутри ˍˍdictˍˍ). Эдакий частный случай lru_cache для класса. В результате, вместо такой записи class MyClass: @property @functools.lru_cache(maxsize=1) def value(self): return 123 мы можем записать более красиво и адаптированно для property from functools import cached_property class MyClass: @cached_property def value(self): return 123 Помимо более логичной записи, этот декоратор решает еще ряд проблем, возникающих при декорирвовании свойств классов через lru_cache. Так что в таких случаях его использование не то чтобы желательно, а обязательно! #tricks