accumulators
Scott David Daniels
Scott.Daniels at Acm.Org
Fri Jun 25 18:15:25 EDT 2004
Paul Rubin wrote:
> ... The Pythonic way to do it is with a class instance:
>
> class accum:
> def __init__(self, n):
> self.s = n
> def __call__(self, i):
> self.s += i
> return self.s
>
> a = accum(3)
> (etc.)
>
> however, for programmers comfortable with the Lisp idioms of using
> internal lambdas, the class/object approach is cumbersome.
The way I'd do it is:
class accum:
def __init__(self, start):
self.runningtotal = start
def increment(self, value):
self.runningtotal += value
return self.runningtotal
a = accum(3).increment
Then you can use:
a(3) ...
That is, avoid magic names unless needed, and make the names obvious.
--
-Scott David Daniels
Scott.Daniels at Acm.Org
More information about the Python-list
mailing list