__setattr__ para locals()

Milton Galo Patricio Inostroza Aguilera minoztro en gmail.com
Mie Nov 28 17:38:47 CET 2007


El 28/11/07, Chema Cortes <pych3m4 en gmail.com> escribió:
> El 28/11/07, Milton Galo Patricio Inostroza Aguilera
> <minoztro en gmail.com> escribió:
>
> >    Si te fijas en metodo_ejemplo tengo una variable local llamada "x"
> > y me gustaría que al asignarla o modificar su valor pasara lo mismo
> > que cuando lo hago con el atributo a {self.a}.
> >
> >    En realidad lo que quiero hacer es trata de construir un prototipo
> > que realice debugger omnisciente a script's escritos en el lenguaje
> > python {en la universidad de chile ya han logrado construir uno para
> > java}, quizás tu sepas algo más del tema y me puedas guiar con
> > implementaciones ya realizadas...gracias por vuestra ayuda y disculpa
> > mi insistencia en el tema.
>
> Sólo puedo darte algunas indicaciones. Estamos hablando de un lenguaje
> dinámico, donde se debe asumir que los objetos tienen vida propia más
> allá de los límites de la ejecución de nuestro programa (no como hacen
> lenguajes estáticos como java).
>
> Un buen sitio por donde empezar sería estudiar el bytecode de python
> (en la documentación estándar) donde se observa lo siguiente:
>
> - hay instrucciones para guardar y leer objetos "globales"
> (STORE_GLOBAL/LOAD_GLOBAL)
> - las variables locales están asociadas a las "clausuras" (MAKE_CLOSURE)
> - el acceso a las variables locales se hace a través de un índice al
> stack (STORE_FAST/LOAD_FAST)
>
> A partir de estas consideraciones, deberías asignar, mediante
> sys.settrace, una función "hook" global (o threading.settrace en
> multihilo) que controle la ejecución de las clausuras, y leer de
> sys.exec_info y sys.exc_traceback, y de func_code.co_* lo que está
> pasando.
>
>
> Es bastante complejo. Si te pierdes, podría mirarlo con más
> detenimiento. Nunca me he puesto a hacer nada parecido, pero estoy
> totalmente convencido que se puede hacer cualquier tipo de
> "introspección" en la ejecución de un script de python.

Gracias Chema por tus indicaciones...los muchachos de la universidad
de chile igual tuvieron que utilizar el bytecode de java para lograr
su objetivo...yo quería lograr que a través de programación se pudiera
hacer la instrumentación de código pero como me han dicho y me he
podido dar cuenta esto no se puede hacer para las variables
locales...así que ahora a estudiar el bytecode de python

> _______________________________________________
> Lista de correo Python-es
> http://listas.aditel.org/listinfo/python-es
> FAQ: http://listas.aditel.org/faqpyes
>


-- 
Milton Inostroza Aguilera
_______________________________________________
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