Voglio ottenere il numero di riga di una funzione python nel codice sorgente. Quello che ho in fase di esecuzione è il modulo, classe, metodo oggettiCome ottenere il numero di linea della funzione (con/senza un decoratore) in un modulo python?
hanno guardato ispezionare
inspect.getsourcelines(object)
che dà anche il numero di riga del risultato.
Vedo che per i metodi con decoratori, linea n. restituito da sopra ispezionare i punti funzione sul codice sorgente effettivo del decoratore piuttosto che sul codice sorgente della funzione desiderata. Quindi un modo per aggirare questo? (ho capito che l'interprete fa qualcosa come la funzione di wrapping all'interno del decoratore in runtime, ma potrei sbagliarmi)
Vedo, grazie per l'expln. Anche con 'func_code' sto prendendo la linea n. del codice sorgente del decoratore. Procedere ignorando la linea di impostazione n. per i metodi con qualsiasi decoratore. La mia domanda ora è come scoprire che un metodo ha _any_ decorator o no (nome decoratore non conosciuto in precedenza) – Hari
@Hari: un decoratore può restituire ciò che vuole (anche qualcosa che non è una chiusura o anche solo la stessa funzione che esso preso in input, possibilmente facendo qualche altro calcolo prima di restituirlo) quindi non esiste un metodo sicuro al 100% per sapere se una funzione è stata decorata o non ha dato l'oggetto funzione. – 6502