Python hasattr() 関数
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
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
コード解析:
- 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)}")
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()と併用されます。
その他の拡張