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

Davide Lo Re boyska a gmail.com
Lun 16 Apr 2007 19:47:47 CEST


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')

functools e' nuovo nella 2.5, ma e' mostrato come "copiarlo" in python2.4.
> ciao
> m
Ciao!
Davide




Maggiori informazioni sulla lista Python