Python 内建函数列表 > Python 的内置函数 setattr
Python 的内置函数 setattr() 用于动态设置对象的属性值。该函数接受三个参数:对象、属性名称字符串和属性值。当我们需要在运行时为对象添加或修改属性时,setattr() 提供了灵活的操作方式。
基本语法:
1setattr(object, attribute_name, value) 2
详细说明:
- 参数解析:
object:需要设置属性的目标对象attribute_name:字符串形式的属性名称value:要设置的属性值
- 功能特点:
- 可以动态地为对象添加新属性
- 可以修改对象已有属性的值
- 属性名称可以通过字符串形式动态指定
- 与
getattr()函数形成互补操作
- 典型应用场景:
- 动态配置对象属性(如根据配置文件设置属性)
- 在元编程中动态修改类或实例
- 实现类似字典的访问接口
- 批量设置多个属性
示例代码:
1class Person: 2 pass 3 4p = Person() 5 6# 设置单个属性 7setattr(p, 'name', 'Alice') 8print(p.name) # 输出: Alice 9 10# 批量设置属性 11attributes = {'age': 25, 'job': 'Engineer'} 12for key, value in attributes.items(): 13 setattr(p, key, value) 14 15print(p.age, p.job) # 输出: 25 Engineer 16 17# 修改已有属性 18setattr(p, 'age', 26) 19print(p.age) # 输出: 26 20
注意事项:
- 属性名称必须是字符串
- 如果对象是类的实例,属性将作用于实例而非类
- 与直接使用点号(.)赋值的区别在于属性名称的动态性
- 对于不可变对象或某些内置类型可能无法设置属性
setattr() 与 object.attribute = value 的等价关系:
1setattr(obj, 'attr', value) # 等价于 2obj.attr = value 3
但 setattr() 的优势在于属性名称可以是运行时确定的字符串变量,这在需要动态处理属性时特别有用。
《Python 的内置函数 setattr》 是转载文章,点击查看原文。