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 おすすめ本
スポンサード リンク
関連記事
- Python : 再帰は大きな問題が小さな問題に収束するように使う
- Python: f-string(f 文字列)と「:」の便利な使い方
- Python: bytes 型 と str 型の違い。変換方法
- Python: MySQL へ接続するモジュール mysqlclient(MySQLdb)の使い方
- Python: インポートしたときに「ModuleNotFoundError」になる場合の対処法
- Python: カウンタ。Counter()関数で要素数を計算する
- Python: Requests-HTML の使い方
- Python: BeautifulSoup 使い方(タイトル・HTML 取得など)
- Python: Requests モジュールの使い方(スクレイピング、データ収集など)
- Python: SQL の基本コマンドと sqlite3 モジュール
Leave a Comment