mirror of
https://github.com/Brandon-Rozek/website.git
synced 2024-11-29 10:27:14 -05:00
30 lines
No EOL
700 B
Markdown
30 lines
No EOL
700 B
Markdown
---
|
|
title: "Quick Python: Cached Property"
|
|
date: 2020-04-18T18:29:21-04:00
|
|
draft: false
|
|
tags: ["Python"]
|
|
medium_enabled: true
|
|
---
|
|
|
|
If you have a property in an object that only needs to be computed once, consider using `cached_property` to store the result and serve for future function calls.
|
|
|
|
```python
|
|
import functools
|
|
class Number:
|
|
def __init__(self, n):
|
|
self.n = n
|
|
@functools.cached_property
|
|
def is_prime(self):
|
|
return all(self.n % i for i in range(2, self.n))
|
|
```
|
|
|
|
Let's test it with the Mersenne prime `524287`.
|
|
|
|
```python
|
|
n = Number(524287)
|
|
n.is_prime
|
|
```
|
|
|
|
After maybe 1-2 seconds of thinking you should get `True.`
|
|
|
|
Run it again and the result will be instantaneous! |