ソースコード内のPython関数の行番号を取得したいと思います。私は、実行時に持っている何 は、また、結果に行番号を与えるpythonモジュールで関数の行番号を取得するにはどうすればいいですか?
inspect.getsourcelines(object)
を検査モジュールは、クラスは、メソッドが
が見ていたオブジェクトです。デコレータ付きのメソッドの場合は、行番号を参照してください。実際のデコレータのソースコードは、目的の関数のソースコードではなく、上のinspect関数のポイントから返されます。 これを回避する方法はありますか? (私はインタプリタが実行時にデコレータ内で関数を折り返すようなことを理解していますが、間違っている可能性があります)
私はexplnのおかげで、参照してください。 'func_code'であっても、行番号を取得しています。デコレータのソースコード。私は設定行番号を無視して進みます。デコレータを持つメソッドの場合私の質問は、メソッドが_any_デコレータを持っているかどうかを調べる方法です(デコレータ名は以前は知られていません) – Hari
@Hari:デコレータは何でも望むものを返すことができます(クロージャでも、それが返される前に他の計算をしている可能性があります)、関数オブジェクトが装飾されているかどうかを知るための100%確実なメソッドはありません。 – 6502