在 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教程欢迎持续关注编程学习网。
扫码二维码 获取免费视频学习资料
- 本文固定链接: http://www.phpxs.com/post/13299/
- 转载请注明:转载必须在正文中标注并保留原文链接
- 扫码: 扫上方二维码获取免费视频资料