Como eu faço monkeypatching em python?

votos
7

Eu tinha que fazer alguma introspecção em python e não era bonito:

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

Para obter algo como

foo.py:22 bar() blah blah

Na nossa saída de depuração.

Eu idealmente gostaria de preceder qualquer coisa para stderr com este tipo de informação - É possível alterar o comportamento de impressão globalmente dentro de python?

Publicado 03/09/2008 em 13:35
fonte usuário
Em outras línguas...                            


2 respostas

votos
3

A declaração de impressão faz o seu IO através de "sys.stdout.write" para que você possa substituir sys.stdout se você quiser manipular o fluxo de impressão.

Respondeu 03/09/2008 em 13:42
fonte usuário

votos
1

O python inspecionar módulo torna isso muito mais fácil e mais limpo.

Respondeu 03/09/2008 em 16:21
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more