Python getattr()

getattr() 方法返回对象的命名属性的值。如果未找到,它将返回提供给函数的默认值。

示例

class Student:
  marks = 88
  name = 'Sheeran'

person = Student()

name = getattr(person, 'name')
print(name)
marks = getattr(person, 'marks')
print(marks) # Output: # Sheeran # 88

getattr() 语法

getattr() 方法的语法是

getattr(object, name[, default])

上述语法等同于

object.name

getattr() 参数

getattr() 方法接受多个参数

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

getattr() 返回值

getattr() 方法返回

  • 给定对象的命名属性的值
  • default,如果未找到命名属性
  • AttributeError 异常,如果未找到命名属性且未定义 default

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

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()

# when default value is provided
print('The sex is:', getattr(person, 'sex', 'Male'))
# when no default value is provided
print('The sex is:', getattr(person, 'sex'))

输出

The sex is: Male
AttributeError: 'Person' object has no attribute 'sex'

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

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


另请阅读

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战