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)

Attachment: signature.asc
Description: Digital signature

_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a