
setattr() 是 Python 的内置函数,用于在运行时动态地为对象设置属性或方法。它通过字符串形式的属性名来操作,是 Python 反射机制的核心部分,广泛应用于框架开发、配置管理、插件系统等需要灵活操作属性的场景。
1. 基础语法与功能
setattr(object, name, value) 接受三个参数:
object: 要操作的目标对象。name: 一个字符串,表示要设置或修改的属性名。value: 要赋予该属性的值。
它的功能等价于 object.name = value,但关键区别在于 name 可以是动态生成的字符串变量,这提供了极大的灵活性。如果属性已存在,setattr() 会更新其值;如果不存在,则会创建新属性。
2. 核心应用场景
a) 动态添加或修改属性
这是 setattr() 最直接的用途,允许你在程序运行时为对象添加或修改属性。
class Person:
pass
p = Person()
setattr(p, "name", "Alice") # 动态添加属性
print(p.name) # 输出:Alice
setattr(p, "name", "Bob") # 动态修改已有属性
print(p.name) # 输出:Bob
b) 从字典或配置批量初始化对象
当需要根据一个字典(例如从配置文件、JSON 数据或用户输入解析而来)来初始化对象属性时,setattr() 是理想工具。
class Config:
def __init__(self, data: dict):
for key, value in data.items():
setattr(self, key, value)
config = Config({"host": , : , : })
(config.host, config.port, config.debug)


