继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Python 的内置函数 setattr

2882716
关注TA
已关注
手记 70
粉丝 0
获赞 0

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 反射机制的重要组成部分,广泛用于框架开发、动态配置等需要运行时修改对象结构的场景。

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP