2008-09-03 9 views
7

я должен был сделать некоторые самоанализа в Python, и это было не очень:Как сделать monkeypatching в python?

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

Чтобы получить что-то вроде

foo.py:22 bar() blah blah 

В нашей продукции отладки.

В идеале я хотел бы добавить что-нибудь к stderr с такой информацией - Возможно ли изменить поведение печати по всему миру в пределах python?

ответ

3

Оператор печати выполняет ввод в IO через «sys.stdout.write», поэтому вы можете переопределить sys.stdout, если хотите управлять потоком печати.

1

Модуль python inspect делает это намного проще и чище.