Python 的内置函数 setattr() 是一个用于动态设置对象属性的重要工具。该函数的基本语法为 setattr(object, name, value),其作用是将对象 object 的属性 name 设置为指定的 value。
功能详解
典型应用场景
-
动态配置对象:
class Config: pass config = Config() setattr(config, 'MAX_CONNECTIONS', 100) setattr(config, 'TIMEOUT', 30) -
批量设置属性:
settings = {'color': 'blue', 'size': 'large', 'weight': 100} product = Product() for key, value in settings.items(): setattr(product, key, value) -
与
getattr()配合使用:if not hasattr(obj, 'counter'): setattr(obj, 'counter', 0) else: setattr(obj, 'counter', getattr(obj, 'counter') + 1)
注意事项
- 如果对象不允许动态添加属性(如使用了
__slots__),会抛出AttributeError - 属性名必须是有效的 Python 标识符
- 与
delattr()函数配合可以实现属性的完整动态管理
与直接赋值的比较
# 直接赋值
obj.attribute = value
# 使用 setattr
setattr(obj, 'attribute', value)
后者在属性名是变量时特别有用,例如处理用户输入或配置文件中的属性名时。
setattr() 是 Python 反射机制的重要组成部分,广泛用于框架开发、动态配置等需要运行时修改对象结构的场景。
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦