Python 內建函數列表 > Python 的內置函數 hasattr
Python 的內置函數 hasattr()
用于檢查一個對象是否具有指定的屬性或方法。該函數的語法為:
hasattr(object, name)
參數說明:
object
:要檢查的對象,可以是任何 Python 對象name
:要檢查的屬性或方法名稱,以字符串形式傳入
返回值:
- 如果對象具有該屬性或方法,返回
True
- 否則返回
False
功能特點:
- 該函數會在對象及其繼承鏈中查找指定屬性
- 對于動態創建的屬性同樣有效
- 可以檢查方法是否存在,但不會驗證方法是否可調用
典型應用場景:
- 動態屬性檢查:在不確定對象是否具有某個屬性時使用
class MyClass:def __init__(self):self.value = 42obj = MyClass()
print(hasattr(obj, 'value')) # 輸出: True
print(hasattr(obj, 'non_existent')) # 輸出: False
- 插件系統開發:檢查插件是否實現了必需的方法
class Plugin:def execute(self):passplugin = Plugin()
if hasattr(plugin, 'execute'):plugin.execute()
- 接口兼容性檢查:在調用方法前驗證其是否存在
def process(obj):if hasattr(obj, 'save'):obj.save()else:print("對象不支持保存操作")
注意事項:
- 與
getattr()
配合使用可以更安全地訪問屬性 - 對于私有屬性(以雙下劃線開頭),需要使用真實的名稱進行檢查
- 該函數不會觸發屬性描述符的
__get__
方法
對比其他相關函數:
getattr()
:獲取屬性值,可以設置默認值setattr()
:設置屬性值dir()
:列出對象的所有屬性和方法
性能考慮:
hasattr()
的調用開銷相對較小,但在性能敏感的環境中頻繁使用仍需謹慎。