I try to use the result of a class method several times, without requiring the large calculations needed to get the result.
I see the following options, which ones, in your opinion, are correct or more Pythonic?
What are the advantages and disadvantages of each?
Try / Except:
class Test:
def __init__(self, *args):
@property
def new_method(self):
try:
return self._new_property
except AttributeError:
return self._new_property
lru_cache approach:
from functools import lru_cache
class Test:
def __init__(self, *args):
@property
@lru_cache()
def new_method(self):
return self._new_property
Django cache_property approach:
from django.utils.functional import cached_property
class Test:
def __init__(self, *args):
@cached_property
def new_method(self):
return self._new_property
source
share