python 对象属性作为参数_如何将对象属性作为函数参数传递给lambda函数?
這是另一個使用^{}的版本。我認為在這里給Employee類a.sortclassmethod是有意義的。我從andrejkesely“借用”了__repr__方法和測試數據。;)from operator import attrgetter
class Employee:
allEmployees = []
def __init__(self, name, age):
self.name = name
self.age = age
Employee.allEmployees.append(self)
def __repr__(self):
return f'Employee({self.name}, {self.age})'
@classmethod
def sort(cls, attr):
return sorted(cls.allEmployees, key=attrgetter(attr))
Employee('John', 30)
Employee('Miranda', 20)
Employee('Paolo', 42)
print(Employee.sort('name'))
print(Employee.sort('age'))
輸出
^{pr2}$
operator.attrgetter的一個優點是我們可以向它傳遞多個屬性,它將返回一個屬性元組。我們可以使用它在一個過程中按多個屬性排序。但是我們需要稍微修改.sort方法。其他代碼保持不變。在@classmethod
def sort(cls, *attrs):
return sorted(cls.allEmployees, key=attrgetter(*attrs))
Employee('John', 30)
Employee('Miranda', 20)
Employee('Paolo', 42)
Employee('John', 20)
print(Employee.sort('name'))
print(Employee.sort('age'))
print(Employee.sort('name', 'age'))
輸出[Employee(John, 30), Employee(John, 20), Employee(Miranda, 20), Employee(Paolo, 42)]
[Employee(Miranda, 20), Employee(John, 20), Employee(John, 30), Employee(Paolo, 42)]
[Employee(John, 20), Employee(John, 30), Employee(Miranda, 20), Employee(Paolo, 42)]
總結
以上是生活随笔為你收集整理的python 对象属性作为参数_如何将对象属性作为函数参数传递给lambda函数?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python windows 安装scr
- 下一篇: mysql增量备份保留策略_Mysql备