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