メソッドパラメータ名を取得するにはどうすればいいですか? 質問する

メソッドパラメータ名を取得するにはどうすればいいですか? 質問する

関数がa_method次のように定義されているとします。

def a_method(arg1, arg2):
    pass

それ自体から始めてa_method、引数名を取得するにはどうすればよいですか?たとえば、 のような文字列のタプルとして取得できますか("arg1", "arg2")

ベストアンサー1

見てみましょうinspectモジュール - さまざまなコード オブジェクトのプロパティの検査を実行します。

>>> inspect.getfullargspec(a_method)
(['arg1', 'arg2'], None, None, None)

その他の結果は、*args および **kwargs 変数の名前と、提供されるデフォルトです。つまり、

>>> def foo(a, b, c=4, *arglist, **keywords): pass
>>> inspect.getfullargspec(foo)
(['a', 'b', 'c'], 'arglist', 'keywords', (4,))

一部の呼び出し可能関数は、Python の特定の実装ではイントロスペクションできない可能性があることに注意してください。たとえば、CPython では、C で定義された一部の組み込み関数は、引数に関するメタデータを提供しません。その結果、組み込み関数で をValueError使用すると、が返されます。inspect.getfullargspec()

Python 3.3以降では、inspect.signature()呼び出し可能なオブジェクトの呼び出しシグネチャを確認するには:

>>> inspect.signature(foo)
<Signature (a, b, c=4, *arglist, **keywords)>

おすすめ記事