python中getattr()是什么?

getattr()用于动态获取对象属性,若属性不存在可返回默认值而不报错。例如getattr(p, 'name')返回"Alice",getattr(p, 'gender', '未知')返回"未知",常用于反射和通用函数编写。

在 Python 中,getattr() 是一个内置函数,用来获取对象的某个属性值。如果该属性存在,就返回它的值;如果不存在,可以提供一个默认值,避免程序报错。

基本语法

getattr(object, name[, default])

  • object:目标对象
  • name:属性名,字符串形式
  • default(可选):如果属性不存在时返回的默认值。不提供且属性不存在时会抛出 AttributeError

实际用法示例

假设有一个简单的类:

class Person:
    def __init__(self):
        self.name = "Alice"
        self.age = 25

使用 getattr() 获取属性:

p = Person()
print(getattr(p, 'name')) # 输出: Alice
print(getattr(p, 'age')) # 输出: 25
print(getattr(p, 'gender', '未知')) # 属性不存在,返回默认值“未知”

为什么使用 getattr()?

它特别适合在你不确定对象是否有某个属性时动态访问。比如处理配置对象、解析数据结构或编写通用函数时非常有用。

  • 避免因属性缺失导致程序中断
  • 实现更灵活的对象操作,如根据字符串动态读取属性
  • 常用于反射(reflection)编程场景

基本上就这些。getattr() 看似简单,但在写通用代码时很实用。