On Sun, Jun 29, 2008 at 06:14:05PM +0200, Francesco Stablum wrote: > Un saluto a tutti, > mi chiamo Francesco e sono nuovo della lista :-) > > Ho cominciato ad usare il python un paio di mesi fa per lavoro e lo > trovo un linguaggio estremamente interessante e potente, soprattutto > sul versante dell'introspezione. > > Vorrei condividere con voi del codice che ho scritto per creare setter > e getter "automatici". > > potete visionarlo al seguente url: > http://rafb.net/p/bQDQAF11.html > > l'obiettivo e' quello di creare un "sostituto" di "object" per > estendere le sue funzionalita' e dare la possibilita' > di definire variabili d'istanza con l'override degli operatori > "assegnazione" e "lettura". > > Per raggiungere questo scopo ho ridefinito i metodi __getattribute__ e > __setattr__ > > l'obiettivo e' quello che un pezzo di codice come questo: > > obj.foobar = 42 > > chiami il metodo "set_foobar(42)" definito dentro "obj" > > come vi sembra come idea e come design?
non puoi usare le property di python? non ho letto il codice ma mi
sfugge qualcosa
>>> class Spam(object):
... def _get_egg(self):
... print 'getter'
... return self._egg
... def _set_egg(self, value):
... print 'setter'
... self._egg = value
... egg = property(_get_egg, _set_egg)
...
>>> spam = Spam()
>>> spam.egg = 'ciao'
setter
>>> spam.egg
getter
'ciao'
>>>
> inoltre ho un problemino: non riesco ad accedere alla variabile
> "__foobar" all'interno del metodo __getattribute__
> avete qualche idea? (il problema e' segnato con un FIXME all'interno
> del codice all'url http://rafb.net/p/bQDQAF11.html )
per poter accedere agli attributi devi usare:
object__getattribute__(s, privname)
signature.asc
Description: Digital signature
_______________________________________________ Python mailing list [email protected] http://lists.python.it/mailman/listinfo/python
