Como faço o monkeypatching em python?
-
09-06-2019 - |
Pergunta
Tive que fazer uma introspecção em python e não foi nada 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 conseguir algo como
foo.py:22 bar() blah blah
Em nossa saída de depuração.
Idealmente, gostaria de prender algo a Stderr com esse tipo de informação - é possível alterar o comportamento da impressão globalmente dentro do Python?
Solução
Uma instrução print faz seu IO por meio de "sys.stdout.write" para que você possa substituir sys.stdout se quiser manipular o fluxo de impressão.
Outras dicas
A píton inspecionar módulo torna isso muito mais fácil e limpo.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow