calendarcodediamondfacebookfingerglobalgoogleplushatenahomepagetopplainpocketrssservicetwitterwordpresshome2searchfoldernext-arrowback-arrowfirst-arrowlast-arrow

Python : hasattr() はオブジェクトの属性の有無を調べる

hasattr() は、文字列がオブジェクトの属性名(メソッドやプロパティ)の一つであった場合 True を返す。オブジェクトが指定の属性を持つかどうか事前に判定することができる。

エンジニア速報は Twitter の@commteで配信しています。

Sponsored Link

hasattr() のポイント

  • object が name の属性を持っている場合に True を返す
  • 引数はオブジェクトと文字列
  • 必要な属性のみ確認したい場合に使う
hasattr(object, name)

ドキュメントに「この関数は、getattr(object, name) を呼び出して AttributeError を送出するかどうかを見ることで実装されています。」と書かれている。

つまり、getattr() で指定の属性を取得できれば True 、AttributeError が発生すると False を返す。

hasattr() - 組み込み関数 — Python 3.9.4 ドキュメント

属性を調べる組み込み関数

Python は動的に構成を変更することが可能なので、オブジェクトがどういった変数やメソッドを保持しているのか分からないときがある。

そのようなときに、メソッドを呼び出してうまく実行されるか願うのではなく、要求されているメソッドが存在するかチェックする必要がある。

dir()

dir() 関数を使うとオブジェクトの全ての属性を返すことができる。

class A: def __init__(self, x, y): self.x = x self.y = y a = A(1, 2) print(dir(a)) # ['__class__', '__delattr__', '__dict__',... 'x', 'y']

hasattr()

あるオブジェクトが、指定した属性を保持しているかだけ調べたい場合は、hasattr()を使うとよい。

class A: def __init__(self, x, y): self.x = x self.y = y a = A(1, 2) print(hasattr(a, 'x')) # True

メソッドを調べる。

class A: pass def b(self): pass a = A a.b(1) dir(a) # ['b'] hasattr(a, 'b') # True

オブジェクトの属性を操作したい場合

オブジェクトの属性を操作する組み込み関数に、getattr()、setattr()、delattr()があるが、これらを使うと、オブジェクトの属性を動的に操作することができる。

Python おすすめ本

スポンサード リンク

Comments

Leave a Comment

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください