UtilCache Module
- class poisson_approval.utils.UtilCache.DeleteCacheMixin[source]
Mixin used to delete cached properties.
Notes
Cf. decorator
cached_property()
.Examples
>>> class Example(DeleteCacheMixin): ... @cached_property ... def x(self): ... print('Big computation...') ... return 6 * 7 >>> a = Example() >>> a.x Big computation... 42 >>> a.x 42 >>> a.delete_cache() >>> a.x Big computation... 42
- poisson_approval.utils.UtilCache.cached_property(f)[source]
Decorator used in replacement of
@property
to put the value in cache automatically.Notes
The first time the attribute is used, it is computed on-demand and put in cache. Later accesses to the attributes will use the cached value.
Cf.
DeleteCacheMixin
for an example.
- poisson_approval.utils.UtilCache.property_deleting_cache(hidden_variable_name, doc='')[source]
Define a property that deletes the cache when set or deleted.
- Parameters
hidden_variable_name (str) – The name of the hidden variable used to store the value of the property.
doc (str) – The docstring of the property.
Notes
The class must inherit from
DeleteCacheMixin
.Examples
>>> class MyClass(DeleteCacheMixin): ... def __init__(self, some_parameter): ... self.some_parameter = some_parameter ... some_parameter = property_deleting_cache('_some_parameter') ... @cached_property ... def my_cached_property(self): ... print('Computing my_cached_property...') ... return 'Hello %s!' % self.some_parameter >>> my_object = MyClass(some_parameter='World') >>> my_object.my_cached_property Computing my_cached_property... 'Hello World!' >>> my_object.my_cached_property 'Hello World!' >>> my_object.some_parameter = 'everybody' >>> my_object.my_cached_property Computing my_cached_property... 'Hello everybody!'