The Python cached_property() function transforms a method of a class into a property, where its value is computed only once and this value will be cached as a normal attribute. Here, the result is stored when the method is executed for the first time.
This function improves the performance of a program by avoiding the duplicate calculations and simplifies code by allowing method.
SyntaxFollowing is the syntax for the function.
@cached_property()Parameters
This function doesn't accept any parameters.
Return ValueDecorator returns the cached result from the decorated method.
Example 1In this example, we are calculating the area of a circle using the cached_property() decorator. The result is cached, so subsequent accesses to the area returns the cached value without recalculating.
from functools import cached_property class Circle: def __init__(self, rad): self.rad = rad @cached_property def area(self): print("Calculating area of a circle.") return 3.14159 * self.rad ** 2 circle = Circle(23) print(circle.area) print(circle.area)Output
The result is generated as follows −
Calculating area of a circle. 1661.90111 1661.90111Example 2
Now, we compute the total_sum of the numbers using the cached_property function. This result will be stored, so future accesses to total_sum retrieves the cached value without recalculating.
from functools import cached_property class NumSeries: def __init__(self, num): self.num = num @cached_property def total_sum(self): print("Sum of the numbers") return sum(self.num) series = NumSeries([21, 3, 12, 45, 65]) print(series.total_sum) print(series.total_sum)Output
The code is generated as follows −
Sum of the numbers 146 146Example 3
In the below code, the cached_property() decorator is used to cache the result of the function, converting the lowercase letters to uppercase.
from functools import cached_property class MyString: def __init__(self, text): self.text = text @cached_property def upper_text(self): return self.text.upper() s = MyString("welcome to tutorialspoint") print(s.upper_text) print(s.upper_text)Output
The output is obtained as follows −
WELCOME TO TUTORIALSPOINT WELCOME TO TUTORIALSPOINT
python_modules.htm
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4