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

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


On Wed, Nov 7, 2012 at 2:29 PM, Stefano Dal Pra <s.dalpra a gmail.com> wrote:
> 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)

Scusa, meglio scriverla cosi':
str2int = lambda s : s.isdigit() and int(s)

dato che str e' una keyword...

> 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