__setattr__ para locals()

Chema Cortes pych3m4 en gmail.com
Mar Nov 27 11:50:06 CET 2007


El 27/11/07, Milton Galo Patricio Inostroza Aguilera
<minoztro en gmail.com> escribió:
> Entiendo que locals() retorna un objeto de tipo dict...pero como hago
> para que cada vez que defino una variable local pueda manejar la
> escritura en el diccionario en el cual python guarda esas variables
> locales?....no veo como puedo accesar a ese diccionario....

No tengo claro qué pretendes, pero el acceso a los objetos
globales/locales está limitado por razones de sincronismo de
multihilos (GIL). Por esa razón su acceso se hace a través de una
función y no directamente por referencia.

Lo que te propongo es usar el comando exec (ó la función eval()) para
ejecutar el código con un diccionario/mapping que puedas controlar a
tu gusto, todo como una capa de abstracción por encima del código que
quieres estudiar.


>estuve
> mirando el comando exec [1], vi algunos ejemplos y exec ejecuta
> comandos que están como string's....igual no entendí mucho lo
> siguiente:   The built-in functions globals() and locals() return the
> current global and local dictionary, respectively, which may be useful
> to pass around for use by exec.
>
>
>    Quizás con un pequeño ejemplo me puedas ayudar, gracias por tu tiempo, salu2!

class MyGlobals(dict):
  def __setitem__(self, id, value):
    print "Variable ",id,"=",value
    dict.__setitem__(self,id,value)

exec "x=0" in MyGlobals()
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes





Más información sobre la lista de distribución Python-es