Lista de funciones, algún modo sin eval ni lambda?

Tny a.porrua en gmail.com
Mar Sep 19 11:12:12 CEST 2006


Juan Carlos Rodrigo escribió:
> class Op:
>   def __init__( self, op ): self._op = op
>   def __call__( self, k ): return self._op + k
>
> class Sum:
>   def __init__( self, l ): self._len = l
>   def __getitem__( self, i ):
>     if i < 0 or i >= self._len: raise IndexError
>     return Op( i )
>
> sumas = Sum(10)
> print sumas[ 0](5) # 5
> print sumas[ 6](3) # 9
> print sumas[10](1) # ERROR
>   
> ------------------------------------------------------------------------
>
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es
>   

Gracias, me gusta.

Utilizando una función , y una lista quedaría así.

def sumar(a,b):
	return a+b

class Op:
  def __init__( self, op ): self._op = op
  def __call__( self, k ): return sumar(self._op, k)

class Sum:
  def __init__( self, lista ): self.lista = lista
  def __getitem__( self, i ):
    if i < 0 or i >= len(self.lista): raise IndexError
    return Op( self.lista[i] )

s=Sum([5,7,10])
for x in s:
	x(2)

7
9
12




Más información sobre la lista de distribución Python-es