Various tools for working with objects and classes in Python
Project description
Various tools for working with objects and classes in Python
Cached properties
Works just like a normal property, but returned values are cached:
from objecttools import CachedProperty
class ExpensiveOperations(object):
@CachedProperty
def expensive_attribute(self):
return self.calculate()
# To make it settable
@expensive_attribute.setter
def expensive_attribute(self, value):
pass
# To make it deletable
@expensive_attribute.deleter
def expensive_attribute(self):
pass
e = ExpensiveOperations()
e.other_attribute = 1
print(e.expensive_attribute) # Takes a long time.
print(e.expensive_attribute) # Very quick; just retrieve from cache
v = e.expensive_attribute
e.other_attribute = 2 # expensive_attribute should be different now!
print(e.expensive_attribute) # Old value that is wrong.
del e.expensive_attribute
print(e.expensive_attribute) # Takes a long time, but returns new value.
e.other_attribute = 1
# Reset to known value
e.expensive_attribute = v
print(e.expensive_attribute) # Correct value!
Singletons
from objecttools import Singleton
Sentinel = Singleton.create('Sentinel')
Sentinel() is Sentinel() # True
d.get('missing_value', Sentinel()) is Sentinel() # True
class GlobalState(dict, metaclass=Singleton):
attr = 0
gs = GlobalState()
gs['value'] = 7
gs.attr = 1
print(GlobalState()['value'] + GlobalState().attr) # 8
For Python 2 and 3 compatibility, use it as a decorator:
@Singleton.as_decorator
class Class(object):
pass
Installing
From PyPI
$ pip install objecttools
From source
$ git clone 'https://github.com/MitalAshok/objecttools.git'
$ python ./objecttools/setup.py install
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
objecttools-0.0.5.zip
(9.2 kB
view details)
File details
Details for the file objecttools-0.0.5.zip
.
File metadata
- Download URL: objecttools-0.0.5.zip
- Upload date:
- Size: 9.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 51d889cd681cb0d5a8e1275b6d167155925803efaf309d2477d34f1a79fb6ce1 |
|
MD5 | ad988b1249b32b4b77f66a57e0620e6e |
|
BLAKE2b-256 | 15dc12c971a4266d3acb939e3762d4dbeb212f96656a4628ab18cf7ff88e473b |