Come faccio a fare monkeypatching in python?
-
09-06-2019 - |
Domanda
Ho dovuto fare un po ' di introspezione in python e non era bella:
name = sys._getframe(1).f_code
name = "%s:%d %s()" %(os.path.split(name.co_filename)[1],name.co_firstlineno,name.co_name)
Per ottenere qualcosa di simile
foo.py:22 bar() blah blah
Nel nostro output di debug.
Mi piacerebbe idealmente come anteporre nulla a stderr con questo tipo di informazioni -- È possibile modificare il comportamento di stampa a livello globale all'interno di python?
Soluzione
Un'istruzione di stampa fa il suo IO attraverso "sys.stdout.scrivere" in modo da poter sostituire sys.stdout se si desidera modificare il flusso di stampa.
Altri suggerimenti
Il python ispezionare modulo rende tutto molto più facile e più pulito.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow