Python 高阶函数获取命名属性

  • Post category:Python

Python高阶函数是指可以接收函数作为参数或返回函数作为结果的函数。获取命名属性的工具函数 getattr(object, name, default=None) 便是一个常用的高阶函数。

该函数的作用是返回对象 object 的指定属性 name 对应的值。如果对象中没有该属性,则返回 default 指定的默认值(默认值是 None)。

举个例子,假设我们有一个对象 person,包含属性 nameagegender,现在需要获取其中的 name 属性,可以这样写:

person = {'name': 'Zhang San', 'age': 20, 'gender': 'male'}
name = getattr(person, 'name', None)
print(name)

运行结果是 Zhang San。我们将 getattr 函数的第一个参数传入 person,表示需要获取 person 对象的属性。第二个参数传入 name,表示需要获取的属性名。由于 person 对象中包含属性 name,因此函数返回该属性的值 Zhang San。如果该属性不存在,就会返回默认值 None

除了 getattr 函数之外,还有其他与 Python 高阶函数获取命名属性相似的函数,例如 hasattrsetattr

hasattr(object, name) 函数用于检查对象 object 是否包含名字为 name 的属性或方法。例如,需要检查 person 对象是否包含名字为 address 的属性,可以写成:

person = {'name': 'Zhang San', 'age': 20, 'gender': 'male'}
has_address = hasattr(person, 'address')
print(has_address)

运行结果是 False,因为 person 对象中不存在属性 address

setattr(object, name, value) 函数用于设置对象 object 的属性 name 的值为 value。例如,想要将 person 对象的 name 属性改为 Li Si,可以写成:

person = {'name': 'Zhang San', 'age': 20, 'gender': 'male'}
setattr(person, 'name', 'Li Si')
print(person['name'])

运行结果是 Li Si,因为已经将 person 对象中的 name 属性改为了 Li Si

总之,Python 的高阶函数获取命名属性非常实用,可以方便地获取、检查和设置对象的各种属性。对于 Python 开发和数据分析工作都非常有用。