Python PR

【Python】getattrの使い方 -サンプルコード付き-

Python getattr
記事内に商品プロモーションを含む場合があります

こんにちは。

現役エンジニアの”はやぶさ”@Cpp_Learningです。

Pythonの組込み関数 getattr の使い方を勉強したので備忘録も兼ねて本記事を書きます。

getattrとは

getattr()は Python組込み関数 の一つです(お馴染みprint()も組込み関数です)

基本的な使い方は以下の通りです。

引数や戻り値の数(無い場合もある)は、インスタンス(クラス)に依存します。

print()同様にモジュールのimportは不要です。

実践!getattrを使ったPythonプログラミング

いくつかgetattrを使ったソースコードを書いてみます。

サンプルコード❶ -基本-

四則演算クラスとgetattrを使ったサンプルコード

つまり、下記のコードの resutu_1 と result_2 はどちらもaddの演算をしています。

正直、このサンプルコードだけだと getattr を使う理由がイマイチ分からないと思います。

サンプルコード❷ -for文と組み合わせる-

getattrとfor文を組み合わせたサンプルコード

呼び出すメソッドをリスト(calc_list)にしてループ処理すれば、getattr1つでリスト内のメソッドを順番に呼び出すことができます。

サンプルコード➌ -深層学習にも使えそう-

Pytorchとgetattrを組み合わせたサンプルコード

上記の3行目と4行目は、どちらも学習済みモデルをダウンロードするコードです。

下記のように argparse と組み合わせれば、簡単に任意モデルをダウンロードできます。

使用例

python train.py -model resnet18

転移学習などに便利そうです。

Batch normalization fusion for PyTorch|GitHub の How to usでも getattr が使われてました。

サンプルコード❹ -Optuna-

Optunaとgetattrは、すごく相性が良いです。以下の記事にもgetattrを使ったコードがあるので、良ければ探してみてください。

Optunaでハイパーパラメータの自動チューニング -Pytorch Lightning編-
optunaでハイパーパラメータ最適化 pytorch-ligthning編
Optunaでハイパーパラメータの自動チューニング -Pytorch Lightning編-ハイパーパラメータ自動最適化フレームワークOptunaについて、入門から実践まで学べる記事を書きました。基本的な使い方からpytorch-lightningへの適用例までソースコード付きで公開しています。ご参考までに。...
スポンサーリンク

まとめ

getattrの使い方をよく理解していなかったので、サンプルコードを考えてみましたが…getattr便利ですね。

本記事には載せてませんが、状態遷移やイベント駆動など、何かをトリガーにして呼び出すメソッドが変わるような処理にもgetattrが活躍しそうです。

はやぶさ
はやぶさ
本記事がgetattrの使い方に関するヒントになれば嬉しいです
「退屈なことはpythonにやらせよう」ってとても良いタイトルですよね

PICK UP BOOKS

  • 数理モデル入門
    数理モデル
  • Jetoson Nano 超入門
    Jetoson Nano
  • 図解速習DEEP LEARNING
    DEEP LEARNING
  • Pythonによる因果分析
    Python