summaryrefslogtreecommitdiffstats
path: root/Lib/idlelib/Delegator.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/idlelib/Delegator.py')
-rw-r--r--Lib/idlelib/Delegator.py12
1 files changed, 10 insertions, 2 deletions
diff --git a/Lib/idlelib/Delegator.py b/Lib/idlelib/Delegator.py
index c476516..dc2a1aa 100644
--- a/Lib/idlelib/Delegator.py
+++ b/Lib/idlelib/Delegator.py
@@ -1,10 +1,10 @@
class Delegator:
- # The cache is only used to be able to change delegates!
-
def __init__(self, delegate=None):
self.delegate = delegate
self.__cache = set()
+ # Cache is used to only remove added attributes
+ # when changing the delegate.
def __getattr__(self, name):
attr = getattr(self.delegate, name) # May raise AttributeError
@@ -13,6 +13,9 @@ class Delegator:
return attr
def resetcache(self):
+ "Removes added attributes while leaving original attributes."
+ # Function is really about resetting delagator dict
+ # to original state. Cache is just a means
for key in self.__cache:
try:
delattr(self, key)
@@ -21,5 +24,10 @@ class Delegator:
self.__cache.clear()
def setdelegate(self, delegate):
+ "Reset attributes and change delegate."
self.resetcache()
self.delegate = delegate
+
+if __name__ == '__main__':
+ from unittest import main
+ main('idlelib.idle_test.test_delegator', verbosity=2)