2008-09-03 14 views
7

que he tenido que hacer un poco de introspección en Python y no era bastante:¿Cómo hago monkeypatching en python?

name = sys._getframe(1).f_code 
name = "%s:%d %s()" %(os.path.split(name.co_filename)[1],name.co_firstlineno,name.co_name) 

Para obtener algo así como

foo.py:22 bar() blah blah 

En nuestra salida de depuración.

Me gustaría anteponer cualquier cosa a stderr con este tipo de información - ¿Es posible cambiar el comportamiento de impresión global dentro de python?

Respuesta

3

Una declaración de impresión hace su IO a través de "sys.stdout.write" para que pueda anular sys.stdout si desea manipular la secuencia de impresión.

1

El módulo python inspect hace que esto sea mucho más fácil y más limpio.