[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