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 Python@lists.python.it http://lists.python.it/mailman/listinfo/python