home *** CD-ROM | disk | FTP | other *** search
/ PC World 2005 June / PCWorld_2005-06_cd.bin / software / vyzkuste / firewally / firewally.exe / framework-2.3.exe / Delegator.py < prev    next >
Text File  |  2003-12-30  |  831b  |  34 lines

  1. class Delegator:
  2.  
  3.     # The cache is only used to be able to change delegates!
  4.  
  5.     def __init__(self, delegate=None):
  6.         self.delegate = delegate
  7.         self.__cache = {}
  8.  
  9.     def __getattr__(self, name):
  10.         attr = getattr(self.delegate, name) # May raise AttributeError
  11.         setattr(self, name, attr)
  12.         self.__cache[name] = attr
  13.         return attr
  14.  
  15.     def resetcache(self):
  16.         for key in self.__cache.keys():
  17.             try:
  18.                 delattr(self, key)
  19.             except AttributeError:
  20.                 pass
  21.         self.__cache.clear()
  22.  
  23.     def cachereport(self):
  24.         keys = self.__cache.keys()
  25.         keys.sort()
  26.         print keys
  27.  
  28.     def setdelegate(self, delegate):
  29.         self.resetcache()
  30.         self.delegate = delegate
  31.  
  32.     def getdelegate(self):
  33.         return self.delegate
  34.