[解決済み】メソッドのパラメータ名を取得する方法は?
2022-03-31 13:03:17
質問
Pythonの関数が与えられた。
def a_method(arg1, arg2):
pass
引数の番号と名前を抽出するにはどうしたらよいですか。すなわち、もし私が
func
が欲しい。
func.[something]
を返すように
("arg1", "arg2")
.
この場合の使用シナリオは、デコレーターを持っていて、実際の関数に現れるのと同じ順序でメソッドの引数をキーとして使用したい場合です。つまり、次のようなデコレータを作成するとどうなるでしょうか。
"a,b"
を呼び出すと
a_method("a", "b")
?
解決方法は?
をご覧ください。
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の実装によっては、いくつかのcallableがintrospectableでない場合があることに注意してください。例えば、CPythonでは、Cで定義されたいくつかの組み込み関数は、その引数についてのメタデータを提供しません。その結果
ValueError
を使用した場合
inspect.getfullargspec()
を組み込み関数で使用することができます。
Python 3.3以降では、Pythonのファイル名で
inspect.signature()
を使用すると、呼び出し可能なオブジェクトの呼び出し署名を見ることができます。
>>> inspect.signature(foo)
<Signature (a, b, c=4, *arglist, **keywords)>
関連
-
ピロウズ画像色処理の具体的な活用方法
-
[解決済み] 関数デコレータを作成し、それらを連鎖させるには?
-
[解決済み] プログラムの実行やシステムコマンドの呼び出しはどのように行うのですか?
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] リストの最後の要素を取得する方法
-
[解決済み] Pandasのカラム名のリネーム
-
[解決済み] Pythonでシングルトンを作成する
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Pythonの非常に便利な2つのデコレーターを解説
-
PicgoのイメージベッドツールをPythonで実装する
-
[解決済み】TypeErrorの修正方法。Unicodeオブジェクトは、ハッシュ化する前にエンコードする必要がある?
-
[解決済み】pygame.error: ビデオシステムが初期化されていない
-
[解決済み] 'DataFrame' オブジェクトに 'sort' 属性がない
-
[解決済み】LogisticRegression: Pythonでsklearnを使用して、未知のラベルタイプ: '連続'を使用しています。
-
[解決済み】ImportError: bs4という名前のモジュールがない(BeautifulSoup)
-
[解決済み】「OverflowError: Python int too large to convert to C long" on windows but not mac
-
[解決済み] Python関数内のパラメータ名一覧の取得 [重複]。
-
[解決済み] デフォルトの引数値を含む関数のシグネチャを読み取る方法を教えてください。