hasattr 指定の属性を持つかどうかを検査する

hasattr

Pythonのオブジェクトは動的に属性を追加したり削除できるため、「オブジェクトが属性を持つかどうかは(型に依存せず)状況次第」という特徴があります。

ある程度規模の大きな開発の場合、データの連携時に期待した属性を持っているかどうかを確認したくなることが多々出てきますが、こういった場合hasattrという組み込み関数で事前にチェックをすることができます。hasattr関数は、第1引数に検査対象オブジェクト、第2引数に属性名の文字列を指定します。サンプルで確認してみましょう。

class User():
    """
    ユーザークラス
    """

    def __init__(self, name=""):
        self.name = name

    def say_hello(self):
        print("Hello, my name is " + self.name)

    def __str__(self):
        return "name:" + self.name


# オブジェクトを生成する
user = User("Kuro")

# ageという属性を持つかどうかを検索する
print(hasattr(user, "age"))
# False

# ageという属性を追加する
user.age = 30

# 再度検査する
print(hasattr(user, "age"))
# True

userというオブジェクトは最初ageという属性を持っていないため、Falseとなっていましたが、属性追加後はTrueとなっていることが確認できます。