diff options
author | hut <hut@lavabit.com> | 2010-05-22 16:38:24 +0200 |
---|---|---|
committer | hut <hut@lavabit.com> | 2010-05-22 16:38:24 +0200 |
commit | 7f906f5f9cf77bd24ac6294c964a3fdb85988033 (patch) | |
tree | 579358bb587dffab44f3440f173c0b5dbb79344e /ranger | |
parent | b357f51526a9a4ab276f4376f16f48af670f0664 (diff) | |
download | ranger-7f906f5f9cf77bd24ac6294c964a3fdb85988033.tar.gz |
Added ranger.ext.lazy_property
Diffstat (limited to 'ranger')
-rw-r--r-- | ranger/ext/lazy_property.py | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/ranger/ext/lazy_property.py b/ranger/ext/lazy_property.py new file mode 100644 index 00000000..6f894179 --- /dev/null +++ b/ranger/ext/lazy_property.py @@ -0,0 +1,25 @@ +# From http://blog.pythonisito.com/2008/08/lazy-descriptors.html + +class lazy_property(object): + """ + A @property-like decorator with lazy evaluation + + Example: + class Foo: + @lazy_property + def bar(self): + result = [...] + return result + """ + + def __init__(self, method): + self._method = method + self.__name__ = method.__name__ + self.__doc__ = method.__doc__ + + def __get__(self, obj, cls=None): + if obj is None: # to fix issues with pydoc + return None + result = self._method(obj) + obj.__dict__[self.__name__] = result + return result |