summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--templates/memoize.py13
1 files changed, 13 insertions, 0 deletions
diff --git a/templates/memoize.py b/templates/memoize.py
new file mode 100644
index 0000000..95057ad
--- /dev/null
+++ b/templates/memoize.py
@@ -0,0 +1,13 @@
+class memoized(object):
+ def __init__(self, func):
+ self.func = func
+ self.cache = {}
+ def __call__(self, *args):
+ try:
+ return self.cache[args]
+ except KeyError:
+ value = self.func(*args)
+ self.cache[args] = value
+ return value
+ except TypeError:
+ return self.func(*args)