给我讲讲setattr和getattr的用法。
user
setattr和getattr是Python中的两个内置函数，它们用于操作对象的属性。setattr函数用于设置对象的属性，而getattr函数用于获取对象的属性。

1. **setattr函数**：
   `setattr(object, name, value)` - 该函数接受三个参数：
   - `object`：要设置属性的对象。
   - `name`：要设置的属性名（字符串类型）。
   - `value`：属性值。

   例如，假设我们有一个类`Person`，可以通过`setattr`给`Person`对象添加或更改属性：
   ```python
   class Person:
       pass

   p = Person()
   setattr(p, 'name', '张三')
   print(p.name)  # 输出：张三
   ```

2. **getattr函数**：
   `getattr(object, name[, default])` - 该函数接受两个必填参数和一个可选参数：
   - `object`：要获取属性的对象。
   - `name`：要获取的属性名（字符串类型）。
   - `default`：可选，如果指定的属性不存在时返回的默认值。

   例如：
   ```python
   class Person:
       age = 25

   p = Person()
   print(getattr(p, 'age'))  # 输出：25
   print(getattr(p, 'name', '默认名称'))  # 输出：默认名称
   ```

这些函数在动态地设定或查询类的属性时非常有用，尤其是在处理不确定的属性名称或者进行反射（introspection）时。希望这个解释对你有所帮助！如果有更多问题或需要更详细的例子，随时告诉我。
assistant