跳到主要内容

Python getattr() 函数

getattr() 方法返回对象的指定属性值。如果没有找到,它返回函数提供的默认值。

示例

class Student:
marks = 88
name = 'Sheeran'

person = Student()

name = getattr(person, 'name')
print(name)

marks = getattr(person, 'marks')
print(marks)

# 输出: Sheeran
# 88

getattr() 语法

getattr() 方法的语法是:

getattr(object, name[, default])

以上语法等价于:

object.name

getattr() 参数

getattr() 方法接受多个参数:

  • object - 需要返回其命名属性值的对象
  • name - 包含属性名称的字符串
  • default(可选) - 当未找到命名属性时返回的值

getattr() 返回值

getattr() 方法返回:

  • 给定对象的命名属性的值
  • 如果没有找到命名属性,则返回 default
  • 如果未找到命名属性且未定义 default,则抛出 AttributeError 异常

示例 1:Python 中的 getattr() 如何工作?

class Person:
age = 23
name = "Adam"

person = Person()
print('The age is:', getattr(person, "age"))
print('The age is:', person.age)

输出

The age is: 23
The age is: 23

示例 2:当未找到命名属性时的 getattr()

class Person:
age = 23
name = "Adam"

person = Person()

# 当提供了默认值时
print('The sex is:', getattr(person, 'sex', 'Male'))

# 当没有提供默认值时
print('The sex is:', getattr(person, 'sex'))

输出

The sex is: Male
AttributeError: 'Person' 对象没有 'sex' 属性

类 Person 中不存在名为 sex 的属性。因此,当使用默认值 Male 调用 getattr() 方法时,它返回 Male。

但是,如果我们不提供任何默认值,当未找到名为 sex 的属性时,它会引发一个 AttributeError,提示对象没有 sex 属性。