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