编程学习网 > 编程语言 > Python > Python 动态属性操作三巨头:getattr|hasattr|setattr,一文掌握!
2025
07-25

Python 动态属性操作三巨头:getattr|hasattr|setattr,一文掌握!


在 Python 世界里,能让代码更灵活、更优雅的,往往就是动态属性操作。无论是框架底层、ORM 映射,还是你写个小工具做配置加载,都离不开一对儿“读-查-写”神器——getattr、hasattr、setattr。本文带你用最干脆利落的方式,掌握它们的「作用」、「参数」和「高阶用法」,让你的代码秒变“魔法”神器!

1、getattr(obj, name[, default]) → 安全读取,带“保险杠”
作用
根据字符串 name,从对象 obj 里「读」出对应属性;若它不存在,还能给个备用值。
参数
obj:任何 Python 对象
name:属性名(字符串)
default(可选):当目标属性不存在时返回该值,不提供则直接抛 AttributeError

高阶用法

“无 try/except”安全读:省掉臃肿的异常捕获。

配置驱动:用字符串变量,动态读取不同属性,轻松实现反射、插件式扩展。

2、hasattr(obj, name) → 先问再“读”,避免踩坑

作用

判断对象 obj 上,是否真的有个叫 name 的属性或方法。

参数

obj:任意 Python 对象

name:属性名(字符串)

返回:True / False

注意点

hasattr 内部其实就是:

如果属性访问时抛出 非AttributeError,也会被误判为“属性不存在”!

3、setattr(obj, name, value) → 动态写入/覆盖,随心所欲

作用

给对象 obj「写」入(或更新)一个名为 name 的属性,值是 value。

参数

obj:任意 Python 对象

name:属性名(字符串)

value:要赋的值

高阶用法

批量属性注入:从字典一口气给对象“喂”属性

框架/ORM 底层:根据字段名动态映射模型属性,减少重复代码!

小结

以上就是“Python 动态属性操作三巨头:getattr|hasattr|setattr,一文掌握!的详细内容,想要了解更多Python教程欢迎持续关注编程学习网。



扫码二维码 获取免费视频学习资料

Python编程学习

查 看2022高级编程视频教程免费获取