First page Back Continue Last page Overview Graphics

Class Decorators

So far we encapsulated intermediate results in functions.

We can use classes for this purpose as well.

class Memoize:

def __init__(self, fn):

self.fn = fn

self.memo = {}

def __call__(self, *args):

if args not in self.memo:

self.memo[args] = self.fn(*args)

return self.memo[args]

def fib(n):

if n == 0:

return 0

elif n == 1:

return 1

else:

return fib(n-1) + fib(n-2)

fib= Memoize(fib)

print(fib(10))