setattr() 设置属性
最后更新:2026-09-22
setattr() 设置属性
setattr(obj, name, value) 设置 obj 的属性 name 为 value;等价于 obj.name = value。
| 分类 | 内置函数 |
|---|---|
| 类型 | 内置函数 |
| Python 版本 | all |
📝 语法
setattr(object, name, value)
⚙️ 参数
| object 必选 | 要修改属性的对象。 |
|---|---|
| name 必选 | 属性名(字符串)。 |
| value 必选 | 要设置的属性值。 |
返回值:无返回值(None),仅就地设置属性。
💥 异常
AttributeError— 对象不允许设置该属性(只读属性或 __slots__ 限制)时抛出。
▶ 示例
编辑下方代码,点击运行,在输出面板查看结果:
运行结果:
100
🏷️ 相关内置函数
💡 相关案例
更多实战案例即将上线,敬请期待。
❓ 常见问题
Qsetattr(obj, 'x', 100) 和 obj.x = 100 有区别吗?
A功能等价。setattr 的优势是属性名可以是变量或动态计算的字符串,适合反射式编程。
Qsetattr 有什么典型用途?
A配置加载/对象映射:for k, v in config.items(): setattr(obj, k, v),把字典批量变成对象属性。
Q对只读属性调用会怎样?
A抛 AttributeError: can't set attribute,例如给只定义了 getter 的 property 赋值。
Q设置了 __slots__ 的类能 setattr 任意属性吗?
A不能,只能设置 __slots__ 里声明的属性名,设置其他名字抛 AttributeError。