Python hasattr() 関数

Python3 組み込み関数


hasattr()これは、Python でオブジェクトが指定された属性を持っているかを確認するための組み込み関数です。

hasattr()オブジェクトが指定された属性を含むかどうかを示すブール値を返します。動的属性を扱う場合や、属性が存在するかどうかを事前に確認する必要がある場合に非常に便利です。

単語の意味: hasattr 是 has attribute(有属性)的缩写。


基本構文とパラメータ

構文形式

hasattr(object, name)

パラメータの説明

  • パラメータ object:
    • 型:任意のオブジェクト
    • 説明:確認するオブジェクト。
  • パラメータ name:
    • 型:文字列
    • 説明:属性名。

関数の説明

  • 戻り値:ブール値を返しますTrue 或 False。

例

例1:基本的な使い方

例

class Person:
    def __init__(self):
        self.name = "Tom"
        self.age = 20

p = Person()

# 属性が存在するか確認
print(hasattr(p, "name"))    # 出力: True
print(hasattr(p, "age"))     # 出力: True
print(hasattr(p, "gender"))  # 出力: False

# メソッドを確認
print(hasattr(p, "name"))          # 出力: True
print(hasattr(p, "walk"))          # 出力: False

実行結果の予想:

True
True
False
True
False

コード解析:

  1. hasattr() は、オブジェクトが指定された属性を持っているかを確認します。

例2:getattr との併用

例

# 属性を安全に取得
class Config:
    def __init__(self):
        self.debug = True
        self.port = 8080

config = Config()

# 確認してから取得
if hasattr(config, "debug"):
    print(f"debug: {config.debug}")

if hasattr(config, "timeout"):
    print(f"timeout: {config.timeout}")
else:
    print(timeout が存在しないため、デフォルト値を使用)
    # 出力: timeout が存在しないため、デフォルト値を使用

# 動的確認
attrs = ["debug", "port", "host"]
for attr in attrs:
    if hasattr(config, attr):
        print(f"{attr}: {getattr(config, attr)}")

実行結果:

実際の環境で実行すると、確認結果が表示されます。

hasattr()よくgetattr()と併用されます。


Python3 組み込み関数


その他の拡張