[pyar] Introspección

Martin Cerdeira martincerdeira en gmail.com
Jue Abr 21 21:14:14 ART 2011


Hola! Estoy investigando/jugando un poco con introspección en python.
Basicamente, lo que quiero lograr es, desde un modulo tener informacion de
otro modulo (variables, funciones, clases) y, llegar con cierta profundidad,
es decir, supongamos:

#clase.py#
class mentira():
      def __init__(self):
          self.valor = ""

      def metodo(self, what):
          self.valor = what

#test.py
import clase

variable1 = "hola"
variable2 = "koko"

p = clase.mentira()

p.metodo("valor pasado al metodo")

print p.valor

def funcion():
    a = "algo"
    return False

Desde un tercer modulo, importando test, poder "ver" las variables y
funciones de test.py, pero, a la vez, como test.py usa clase.py, poder ver
variables, metodos y demas de esa clase y asi, sucesivamente.

Lo primero que arranque haciendo fue:

#modulo3.py

import test

print test

for i in dir(test):
    print dir(i)

print vars(test)

Con eso, veo bastante, pero, hay alguna herramienta que sea mejor que lo que
estoy empezando a encarar?
Mi "problema" principal es que, al recorer lo que tira dir(test), en
realidad, estoy viendo una lista con strings (y no una lista con los objetos
reales) por ejemplo:

for i in dir(test):
    print "------------------------------"
    print str(type(i)) + ": " + i
    print "------------------------------"
    print dir(i)

Tira que, p es Type str (porque, claro, en la lista es un str) en cambio,
vars() pareciera tener referencias a los objetos (por ejemplo, en el caso de
una funcion)

En fin, si quisieran obtener informacion sobre variables y demas objetos de
un modulo e ir recorriendo, "hacia atrás" los mismos, lo encararían por el
lado que lo empecé yo?

Saludos y, si llegaron hasta acá, gracias por leer!!! =)
-------------------------------------
Martín Cerdeira - Software Developer
[web] http://www.codmacs.blogspot.com/
()  ascii ribbon campaign
/\  www.asciiribbon.org
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20110421/c0a6bc4c/attachment.html>


More information about the pyar mailing list