squared functions--most Pythonic way?

greg greg at cosc.canterbury.ac.nz
Sun Jun 30 03:24:49 EDT 2002


Janto Dreijer wrote:
> 
> def addNumbers(k):
>     def f(x):
>         a = addNumbers(x + k)
>         a.val = x+k
>         return a
>     return f
> 
> >>> addNumbers(9)(5)(2)(4)(6).val
> 26
> 
> Now if only I could figure out how to use __repr__() so I don't 
> need that ".val". It also fails when passed only one number. i.e
> addNumbers(5). Help?

class AddNumbers:

  def __init__(self, x):
    self.val = x

  def __call__(self, k):
    return AddNumbers(self.val + k)
	
  def __repr__(self):
    return repr(self.val)

addNumbers = AddNumbers(0)

>>> print addNumbers(9)(5)(2)(4)(6)
26
>>> print addNumbers(5)
0

--
Greg



More information about the Python-list mailing list