3
# The cache is only used to be able to change delegates!
5
def __init__(self, delegate=None):
6
self.delegate = delegate
9
def __getattr__(self, name):
10
attr = getattr(self.delegate, name) # May raise AttributeError
11
setattr(self, name, attr)
12
self.__cache[name] = attr
16
for key in self.__cache:
19
except AttributeError:
23
def cachereport(self):
24
keys = list(self.__cache.keys())
28
def setdelegate(self, delegate):
30
self.delegate = delegate
32
def getdelegate(self):