equal
deleted
inserted
replaced
|
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 |