Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonのgetattr()関数とは?基本構文と使い方を実例つきで解説

Pythonのgetattr()関数とは

getattr()は、オブジェクトが持つ「指定した名前の属性」の値を取得するための組み込み関数です。通常、オブジェクトの属性にはobj.attributeのようにドット記法でアクセスしますが、getattr()を使えば属性名を文字列として指定して動的にアクセスできます。

もし指定した属性がオブジェクトに存在しない場合は、第3引数で渡されたデフォルト値を返します。デフォルト値も指定されていない場合は、AttributeError例外が発生します。

基本構文

getattr(object, name[, default])

パラメータ

  • object: 属性を取得したい対象のオブジェクト
  • name: 取得したい属性名(文字列で指定)
  • default(省略可): 属性が存在しない場合に返される値

戻り値

  • 指定されたオブジェクトの、名前付き属性の値
  • 属性が見つからない場合は、defaultに指定した値
  • 属性が見つからず、かつdefaultも定義されていない場合は、AttributeError例外

使用例

次の例では、クラスのインスタンスからgetattr()を使って属性を取得しています。ドット記法でのアクセス結果と同じになることが確認できます。

class Male:
    age = 21
    name = "Abel"

x = Male()
print('年齢は:', getattr(x, "age"))
print('年齢は:', x.age)

出力結果

このコードを実行すると、以下の出力が得られます。

年齢は: 21
年齢は: 21

getattr()が役立つ場面

getattr()は、属性名があらかじめ分からない、あるいは実行時に決定するようなケースで特に便利です。

  • 動的な属性アクセス: 変数に格納された文字列をもとに属性へアクセスできる
  • 安全な属性チェック: defaultを指定すれば、属性の有無を気にせずエラーを回避できる
  • 設定やデータ駆動型の処理: 設定ファイルや辞書のキー名と属性名を連動させた柔軟な実装が可能

たとえば、属性が存在しない可能性がある場合でも、次のように書けば例外を発生させずに処理できます。

print(getattr(x, "height", "未設定"))  # 出力: 未設定

このようにgetattr()を活用すると、より堅牢で柔軟なPythonコードを書くことができます。

  1. Pythonの名前空間とは?仕組みとスコープの関係をわかりやすく解説

    Pythonにおける名前空間の基本名前空間(namespace)とは、変数名とオブジェクトを対応付ける仕組みであり、スコープ(名前の有効範囲)を実現するための基盤となるものです。Pythonでは、パッケージ、モジュール、クラス、関数、メソッドなど、それぞれが独自の「名前空間」を持ち、その中で変数名が解決されます。名前空間の生成と破棄関数やモジュール、パッケージが評価されて実行が始まると、そのための新しい名前空間が作成されます。これは「評価コンテキスト」と捉えると理解しやすいでしょう。そして、関数などの実行が終了すると、その名前空間は破棄され、そこに含まれていた変数も一緒に消えます。さらに、ロー

  2. Pythonの「%」演算子とは?文字列フォーマットの基本と使い方を解説

    Pythonの「%」演算子の役割 Pythonにおける「%(パーセント)」は、文字列フォーマット演算子(補間演算子)として機能します。「format % values」という形式で記述すると、フォーマット文字列内の変換指定子が、values側の要素によって置き換えられます。この仕組みは、C言語のsprintf()関数とよく似ています。 基本的な使い方:文字列の埋め込み 最もシンプルな例は、文字列の中に変数の値を埋め込むケースです。 >>> lang = Python >>> print %s is awesome! % lang Python is awe