Open Qu4tro opened 5 years ago
As a workaround, use dataclass
instead of namedtuple
:
from cached_property import cached_property
from dataclasses import dataclass
@dataclass(frozen=True)
class A:
x: int
@cached_property
def foo(self) -> int:
print('A.foo called')
return self.x + 10
a = A(1)
a.foo # 'A.foo called'
a.foo
Yeah, it's also useful outside of this library because functools.cached_property
also doesn't work with NamedTuple
s.
If anyone is here finding for suggestions, I've also been using functools.lru_cache
for a while now, without a problem. I've kinda described it here: https://github.com/pydanny/cached-property/pull/137#issuecomment-526369393 .
Hello there. Currently there's no way to use cached properties with namedTuples (or other immutable classes implemented the same way)
Trace:
Reproduced in https://github.com/Qu4tro/cachedproperty_immutable_classes
There was a change in python 3.5.1 and NamedTuple no longer has the
__dict__
attribute. More information here: https://stackoverflow.com/a/34166617I totally understand why it's failing, so my question is:
Lmk what you think.