Skip to main content

A decorator for caching computed properties in classes. like Vue's Computed-Properties

Project description

computed-cached-property

A decorator for caching computed properties in classes. like Vue's Computed-Properties

install

pip install computed-cached-property

example

from computed_cached_property import computed_cached_property
from dataclasses import dataclass


@dataclass
class A:
    v1: int = 1
    v2: str = 'fuck'
    v3: bool = False

    @property
    @computed_cached_property
    def v4(self):
        print('run code in v4 function')
        return f'v1:{self.v1}, v2:{self.v2}, v3:{self.v3}'

    @property
    @computed_cached_property(typed=Ture)
    # same as @functools.lru_cache(maxsize=1, typed=Ture)
    def v5(self):
        print('run code in v4 function')
        return f'v1:{self.v1}, v2:{self.v2}, v3:{self.v3}'


a1 = A(v1=99)
print(a1.v4)
print(a1.v4)
a1.v2 = 'xxoo'
print(a1.v4)

# output
# run code in v4 function
# v1:99, v2:fuck, v3:False
# v1:99, v2:fuck, v3:False
# run code in v4 function
# v1:99, v2:xxoo, v3:False

Hint

Not recommended for use in a production environment

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

computed-cached-property-0.0.3.tar.gz (2.6 kB view hashes)

Uploaded Source

Built Distribution

computed_cached_property-0.0.3-py3-none-any.whl (3.8 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page