[Python] Re: getter e setter praticamente uguali per piu' proprieta'

Marco Giusti marco.giusti a gmail.com
Mar 17 Apr 2007 13:05:19 CEST


On Mon, Apr 16, 2007 at 07:47:47PM +0200, Davide Lo Re wrote:
>Marco Giusti ha scritto:
>
>> per sbaglio ho mandato l'email con un indirizzo diverso da quello con
>> cui mi sono inscritto alla lista, riposto il mesaggio
>> 
>> 
>> ciao!!
>> 
>> ho una classe dove voglio creare alcune propieta' che pero' sono
>> concettualmente molto simili, qualcosa di simile a:
>[snip]
>> c'e' un metodo piu' veloce per ottenere lo stesso risultato?
>Potresti creare una funzione che prende come primo parametro il nome della
>variabile da settare e poi lo usi al suo interno (tra l'altro noto che le
>variabili sono in realta' elementi di un dizionario, quindi e' ancora piu'
>semplice).
>a quel punto usi la funzione partial, dei functools.
>http://docs.python.org/lib/module-functools.html
>Esempio:
>def universal_setter(self, var_name, value):
>                if value is None:
>                    return
>                self.vars[var_name] = value
>
>            egg = property(lambda self: self.vars['egg'],
>partial(universal_setter, var_name='egg')
>            foo = property(lambda self: self.vars['foo'],
>partial(universal_setter, var_name='foo')

grazie, ma ancora non ero soddisfatto e cosi' cercando ho scoperto che
le metaclassi fanno al caso mio, in questo modo posso avere una lista
di attributi e posso ciclare la lista e settare le proprieta' in maniera
automatica :)

posto il link[1] che mi ha dato il suggerimento per i posteri,
utilissima la sezione "Adding an attribute with a metaclass (python)"

grazie
m
-------------- parte successiva --------------
Un allegato non testuale è stato rimosso....
Nome:        non disponibile
Tipo:        application/pgp-signature
Dimensione:  189 bytes
Descrizione: Digital signature
Url:         http://lists.python.it/pipermail/python/attachments/20070417/7b56f3d2/attachment.pgp


Maggiori informazioni sulla lista Python