Python 高阶函数获取命名属性

  • Post category:Python

首先,介绍一下Python中的高阶函数。高阶函数指的是操作其他函数的函数,它可以接受其他函数作为参数,也可以返回一个函数。常见的高阶函数有map、filter、reduce等。

在Python中,获取命名属性有多种方法,常见的有使用点(.)操作符和getattr函数。使用点操作符可以直接获取对象的属性,例如:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

person = Person("Alice", 20)
print(person.name)  # 输出 Alice

使用getattr函数可以根据属性名字符串获取属性值,它可以传入一个默认值参数,当属性不存在时返回默认值。例如:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

person = Person("Alice", 20)
print(getattr(person, "name"))  # 输出 Alice
print(getattr(person, "gender", "Unknown"))  # 输出 Unknown

接下来,我们来看一下高阶函数如何结合获取命名属性来使用。

假设我们有一个Person对象列表,现在我们需要获取这些对象的name属性列表。我们可以使用map函数和点操作符来实现:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

persons = [
    Person("Alice", 20),
    Person("Bob", 25),
    Person("Charlie", 30),
]

names = map(lambda person: person.name, persons)
print(list(names))  # 输出 ['Alice', 'Bob', 'Charlie']

另外一个示例,假设我们有一个Person对象列表,现在我们需要获取这些对象的某个属性(由用户输入)的值的列表。我们可以使用map函数和getattr函数来实现:

class Person:
    def __init__(self, name, age, gender):
        self.name = name
        self.age = age
        self.gender = gender

persons = [
    Person("Alice", 20, "female"),
    Person("Bob", 25, "male"),
    Person("Charlie", 30, "male"),
]

attr_name = input("请输入要获取的属性名:")
values = map(lambda person: getattr(person, attr_name), persons)
print(list(values))

以上就是Python高阶函数获取命名属性的完整攻略,希望对你有帮助。