[Python] C'e' un modo per abbreviare questa sintassi?

Stefano Dal Pra s.dalpra a gmail.com
Mer 7 Nov 2012 14:29:22 CET


2012/11/7 orsomannaro <orsomannaro a gmail.com>:
> Il 07/11/2012 09:02, enrico franchi ha scritto:
>
>
>> Non ultima, la cara vecchia scomposizione in funzioni.
>
>
>
> Infatti per ora ho risolto cosi':
>
>
> def str2int(str): return int(str) if str.isdigit() else None
>
>
> numero1 = str2int(get_num(...))
> numero2 = str2int(get_num(...))
> numero3 = str2int(get_num(...))
> ...
> if numero1 and numero2 and numero3 and ...:
>         my_obj.codice1 = numero1
>         my_obj.codice2 = numero2
>         my_obj.codice3 = numero3
>         ...
>

Ciao, ti propongo questa variante:

str2int = lambda str : str.isdigit() and int(str)
n = 0
while True:
    n += 1
    k = str2int(get_num)
    if not k: break
    setattr(my_obj, 'codice%s'%n, k)

esempio svelto di setattr()  :
>>> class p:
...    pass
...
>>> Q = p()
>>> setattr(p,'attr1',0)
>>> Q.attr1
0

Ciao


> _______________________________________________
> Python mailing list
> Python a lists.python.it
> http://lists.python.it/mailman/listinfo/python


Maggiori informazioni sulla lista Python