2008-09-03 5 views
7

J'ai eu à faire une introspection en python et ce ne fut pas assez:Comment faire du 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) 

Pour obtenir quelque chose comme

foo.py:22 bar() blah blah 

Dans notre sortie de débogage. Je préfèrerais préfixer quoi que ce soit à stderr avec ce genre d'information - Est-il possible de changer le comportement de l'impression globalement dans python?

Répondre

3

Une instruction d'impression fait ses E/S via «sys.stdout.write». Vous pouvez donc remplacer sys.stdout si vous souhaitez manipuler le flux d'impression.

1

Le module python inspect le rend beaucoup plus facile et plus propre.

Questions connexes