为了账号安全,请及时绑定邮箱和手机立即绑定

Python 的内置函数 setattr

标签:
Python API

Python 的内置函数 setattr() 是一个用于动态设置对象属性的重要工具。该函数的基本语法为 setattr(object, name, value),其作用是将对象 object 的属性 name 设置为指定的 value

功能详解

  1. 动态属性赋值

    • 与直接使用点号(.)操作符不同,setattr() 允许在运行时动态地为对象添加或修改属性
    • 当属性名作为字符串变量传递时特别有用
  2. 参数说明

    • object:目标对象实例
    • name:字符串形式的属性名
    • value:要设置的属性值

典型应用场景

  1. 动态配置对象

    class Config:
        pass
    
    config = Config()
    setattr(config, 'MAX_CONNECTIONS', 100)
    setattr(config, 'TIMEOUT', 30)
    
  2. 批量设置属性

    settings = {'color': 'blue', 'size': 'large', 'weight': 100}
    product = Product()
    
    for key, value in settings.items():
        setattr(product, key, value)
    
  3. getattr() 配合使用

    if not hasattr(obj, 'counter'):
        setattr(obj, 'counter', 0)
    else:
        setattr(obj, 'counter', getattr(obj, 'counter') + 1)
    

注意事项

  1. 如果对象不允许动态添加属性(如使用了 __slots__),会抛出 AttributeError
  2. 属性名必须是有效的 Python 标识符
  3. delattr() 函数配合可以实现属性的完整动态管理

与直接赋值的比较

# 直接赋值
obj.attribute = value

# 使用 setattr
setattr(obj, 'attribute', value)

后者在属性名是变量时特别有用,例如处理用户输入或配置文件中的属性名时。

setattr() 是 Python 反射机制的重要组成部分,广泛用于框架开发、动态配置等需要运行时修改对象结构的场景。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消