[pyar] Logica repetida en metodos
Pablo Ziliani
pablo en kultroom.com
Vie Dic 3 00:12:47 ART 2010
On 12/02/2010 11:41 PM, Pablo Ziliani wrote:
> On 12/02/2010 10:55 PM, Lucas Liendo wrote:
>> Hola ! Queria consultarles por una duda, resulta que tengo que hacer
>> algunos metodos los cuales todos tienen la misma logica, salvo en un
>> solo punto, el cual es una condicion, para resolverlo se me ocurrio
>> algo asi :
>> (...)
> >>> def condicion_1(n1, n2):
> ... return lambda: n1 > n2
> ...
> >>> def condicion_2(n1, n2):
> ... return lambda: n1 < n2
> ...
> >>> def funcion_dep(cond):
> ... print "truep" if cond() else "falsep"
> ...
> >>> funcion_dep(condicion_1(1,2))
> falsep
> >>> funcion_dep(condicion_1(3,2))
> truep
>
> Donde ves labda podés usar cualquier función, basta que crees el
> closure anidando la definición en la condición. Yo usé lambda sólo por
> brevedad. Fijate que las condiciones se evalúan recién dentro de
> funcion_dep().
(reacción tardía)
Por otro lado, si no te interesa desacoplar funcion_dep() de
condicion_n() a esa altura estás a un paso del decorador:
>>> def funcion_dep(f):
... def condicion(*args):
... print "esto se ejecuta antes de evaluar la condición"
... if f(*args):
... print "truep"
... else:
... print "falsep"
... print "esto se ejecuta después de evaluar la condición"
...
... return condicion
...
>>> @funcion_dep
... def condicion_1(n1, n2):
... return n1 > n2
...
>>> @funcion_dep
... def condicion_2(n1, n2):
... return n1 < n2
...
>>> condicion_1(1,2)
esto se ejecuta antes de evaluar la condición
falsep
esto se ejecuta después de evaluar la condición
>>> condicion_2(1,2)
esto se ejecuta antes de evaluar la condición
truep
More information about the pyar
mailing list