Как мне сделать monkeypatching в python? - PullRequest
8 голосов
/ 03 сентября 2008

Я должен был сделать некоторый самоанализ в 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?

Ответы [ 2 ]

3 голосов
/ 03 сентября 2008

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

1 голос
/ 03 сентября 2008

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

...