Changeset e7862421fa4b2c8d8a5759e89dbfa53f0fbda97f for pyxcb
- Timestamp:
- 01/03/2009 05:28:40 PM (19 months ago)
- Children:
- 6fd23d00b34f187e402f49614fcc3f5c69d3fae0
- Parents:
- 7b6203a415e9073eb38fc7b42431d4525cccb28a
- git-committer:
- Friedrich Weber <fred@samurai-x.org> / 2009-01-03T17:28:40Z+0100
- Files:
-
- 1 modified
-
pyxcb/pyxcb/util.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
pyxcb/pyxcb/util.py
rdb8c5e re78624 31 31 log = logging.getLogger(__name__) 32 32 33 CACHE_KEYWORD = '_cached'34 33 # There is operator.methodcaller in Python 2.6! 35 34 methodcaller = lambda method: lambda value: getattr(value, method)() 36 35 37 def cached(func): 38 # TODO: UGLY UGLY UGLY 39 def do_cache(self, *args, **kwargs): 40 if CACHE_KEYWORD not in func.func_dict: # table does not exist 41 func.func_dict[CACHE_KEYWORD] = {} 42 if self not in func.func_dict[CACHE_KEYWORD]: 43 func.func_dict[CACHE_KEYWORD][self] = func(self, *args, **kwargs) 44 return func.func_dict[CACHE_KEYWORD][self] 45 return do_cache 36 def cached_property(func): 37 """ 38 `property`, but cached; 46 39 47 def cached_property(func): 48 return property(cached(func)) 40 taken from http://code.activestate.com/recipes/576563/ - thanks. 41 """ 42 def getter(self): 43 try: 44 return self._property_cache[func] 45 except AttributeError: 46 self._property_cache = {} 47 self._property_cache[func] = ret = func(self) 48 return ret 49 except KeyError: 50 self._property_cache[func] = ret = func(self) 51 return ret 52 return property(getter) 49 53 50 54 def reverse_dict(d):
