>>> from plib.stdlib import cached_property
>>> class Test(object):
...     def test(self):
...         print "Doing initial calculation..."
...         return "Test done."
...     test = cached_property(test)
... 
>>> t = Test()
>>> 'test' in t.__dict__
False
>>> print t.test
Doing initial calculation...
Test done.
>>> 'test' in t.__dict__
True
>>> print t.test
Test done.
>>> del t.test
>>> 'test' in t.__dict__
False
>>> t.test = "Other value."
>>> print t.test
Other value.
>>> del t.test
>>> print t.test
Doing initial calculation...
Test done.
>>> del t.test
>>> hasattr(t, 'test')
Doing initial calculation...
True
>>> 'test' in t.__dict__
True
>>> print t.test
Test done.
