Sto cercando di scoprire, in fase di esecuzione, dove è stato istanziato un oggetto, in quanto ciò consentirebbe di fornire un messaggio di errore molto utile agli utenti della mia libreria.Come posso sapere dove è stato istanziato un oggetto?
Supponiamo di avere il seguente codice:
import mylib
obj = mylib.MyClass()
obj
viene poi passato a un'istanza di un'altra classe da mylib
, e procede in un viaggio meraviglioso. Da qualche parte lungo la linea, obj
causa qualcosa di brutto, e vorrei indirizzare l'utente a dove obj
è stato istanziato.
Speravo di poter utilizzare il modulo inspect per scoprire in quale file ea quale numero di riga obj
è stato istanziato. Sfortunatamente, lo inspect.getsourcefile
e inspect.getsourcelines
non supportano le istanze. C'è una ragione tecnica per cui questo non è supportato?
C'è un altro modo per ottenere i dati che sto cercando?
non è eccessivamente complicato? quando succede qualcosa di brutto, perché non fare ciò che tutti (presumibilmente) facciamo? Come in: import traceback + try: ... eccetto: traceback.print_exc() – StefanNch