[Python] override di __getattribute__ per avere getter e setter "automatici"

Francesco Stablum stablum a gmail.com
Dom 29 Giu 2008 18:14:05 CEST


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?

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 )

saluti,
Francesco

-- 
The generation of random numbers is too important to be left to chance
- Robert R. Coveyou


Maggiori informazioni sulla lista Python