/Lib/idlelib/Delegator.py
http://unladen-swallow.googlecode.com/ · Python · 33 lines · 25 code · 7 blank · 1 comment · 3 complexity · bb32fe515997cbc8d00e36c5d1f23803 MD5 · raw file
- class Delegator:
- # The cache is only used to be able to change delegates!
- def __init__(self, delegate=None):
- self.delegate = delegate
- self.__cache = {}
- def __getattr__(self, name):
- attr = getattr(self.delegate, name) # May raise AttributeError
- setattr(self, name, attr)
- self.__cache[name] = attr
- return attr
- def resetcache(self):
- for key in self.__cache.keys():
- try:
- delattr(self, key)
- except AttributeError:
- pass
- self.__cache.clear()
- def cachereport(self):
- keys = self.__cache.keys()
- keys.sort()
- print keys
- def setdelegate(self, delegate):
- self.resetcache()
- self.delegate = delegate
- def getdelegate(self):
- return self.delegate