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

TGINSIGHT POST

Post #25

@pythonotes

Python Заметки

Views438Post view count
PostedJan 2401/24/2020, 09:00 AM
Post content

Post content

В предыдущем посте⬆️ был пример кеширования функции. В стандартной библиотеке есть еще один способ, но для классов. Это 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