price goes up by $50!
```python
- class Monopoly(object):
+class Monopoly(object):
- def __init__(self):
- self.boardwalk_price = 500
+ def __init__(self):
+ self.boardwalk_price = 500
- @property
- def boardwalk(self):
- # In reality, this might represent a database call or time
- # intensive task like calling a third-party API.
- self.boardwalk_price += 50
- return self.boardwalk_price
+ @property
+ def boardwalk(self):
+ # In reality, this might represent a database call or time
+ # intensive task like calling a third-party API.
+ self.boardwalk_price += 50
+ return self.boardwalk_price
```
Now run it:
Let's convert the boardwalk property into a `cached_property`.
```python
- from cached_property import cached_property
+from cached_property import cached_property
- class Monopoly(object):
+class Monopoly(object):
- def __init__(self):
- self.boardwalk_price = 500
+ def __init__(self):
+ self.boardwalk_price = 500
- @cached_property
- def boardwalk(self):
- # Again, this is a silly example. Don't worry about it, this is
- # just an example for clarity.
- self.boardwalk_price += 50
- return self.boardwalk_price
+ @cached_property
+ def boardwalk(self):
+ # Again, this is a silly example. Don't worry about it, this is
+ # just an example for clarity.
+ self.boardwalk_price += 50
+ return self.boardwalk_price
```
Now when we run it the price stays at $550.
* @tinche for pointing out the threading issue and providing a solution.
* @bcho for providing the time-to-expire feature
-## Support this project
-
-This project is maintained by volunteers. Support their efforts by spreading the word about:
-
-### Django Crash Course
-
-[![A Wedge of Django](https://cdn.shopify.com/s/files/1/0304/6901/products/AWoD-Front-5.5x8.5in_540x.jpg?v=1600471198)](https://www.feldroy.com/products/django-crash-course)
-
-Django Crash Course for Django 3.0 and Python 3.8 is the best cheese-themed Django reference in the universe!