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

Marco Giusti marco.giusti a gmail.com
Lun 16 Apr 2007 19:06:25 CEST


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:


        class A(object):

            vars = {}

            for p in ('foo', 'bar', 'egg'):
                def fget(self): return self.vars[p]
                def fset(self, value):
                    if value is None: return
                    self.vars[p] = value

                setattr(A, p, property(fget, fset))


pero' questo codice non funziona e cosi' sono costretto a creare una
setter e una getter per ogni variabile:


        class A(object):

            vars = {}

            def fooSetter(self, value):
                if value is None:
                    return
                self.vars['foo'] = value

            foo = property(lambda self: self.vars['foo'], fooSetter)

            def barSetter(self, value):
                if value is None:
                    return
                self.vars['bar'] = value

            bar = property(lambda self: self.vars['bar'], barSetter)

            def eggSetter(self, value):
                if value is None:
                    return
                self.vars['egg'] = value

            egg = property(lambda self: self.vars['egg'], eggSetter)

c'e' un metodo piu' veloce per ottenere lo stesso risultato?

ciao
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/20070416/77fea385/attachment.pgp


Maggiori informazioni sulla lista Python