这是另一个使用^{}的版本。我认为在这里给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函数?相关推荐

  1. python中lambda函数_python中的lambda函数用法

    例1:传入多个参数的lambda函数 defsum(x,y):return x+y 用lambda来实现: p = lambda x,y:x+yprint(p(4,6)) 例2:传入一个参数的lamb ...

  2. python提供两个对象身份比较操作符_标准类型对象比较操作符

    标准类型对象比较操作符 (2008-08-31 12:22:17) 标签: it 标准类型对象身份比较操作符 Python 提供了is和is not操作符来测试两个变量是否指向同一个对象. 像下面这样 ...

  3. python定义接口的关键字_使用*args和**kws指定关键字参数

    带有默认值的函数参数仍然是位置参数,因此您看到的结果是正确的.为参数指定默认值时,您不是在创建关键字参数.当参数不是由函数调用提供时,只使用默认值.在>>> def some_fun ...

  4. c语言全局变量作为参数_在C / C ++中使用变量参数列表

    c语言全局变量作为参数 C/C++ provides a means to pass a variable number of arguments to a function.  This artic ...

  5. 对象 普通po转_谈谈C++对象的构造

    对 象 造化从来自有神 如何对此亦无尘 平生出处皆非妄 老去功名始见真 这是小编以"构造对象"为主题让九歌同学创作的七言绝句.九歌同学以一种非常玄妙的文风向我们介绍了对象的构造,但 ...

  6. c中将数组传递给子函数_在C ++中将对象传递给Non-Member函数

    c中将数组传递给子函数 Here, we have to define a Non-Member Function, in which we have to pass an Object to the ...

  7. ssrs 级联参数_在SSRS中使用多值参数

    ssrs 级联参数 This article covers the usage and detailed features of the multi-value parameter in SSRS. ...

  8. java main传入参数_向java的main()传入大量参数

    项目中有一些用java写成的可执行的工具,需要调用者传入大量的参数.最开始,我使用的是最传统的方式,直接一个传入参数数组,于是有如下这么壮观的代码: public static void main(S ...

  9. vue修改计算属性的值_八.Vue计算属性

    Vue计算属性 前言 我们要做的是springboot和vue.js所做的前后端分离的hr项目,所以从来没接触到vue的小伙伴,可以这篇文章 学Vue入门,这一篇就够了 模板内的表达式非常便利,但是设 ...

最新文章

  1. 【力扣网练习题】有效的括号
  2. AAAI 2020 | MaskGEC:通过动态掩蔽改善语法纠错
  3. 找到一款牛B的vim插件
  4. js 正则判断字符串是否为字母或数字
  5. ArcGIS Server常见问题集锦(转载)
  6. FPGA _Verilog HDL_8位加法器设计实验
  7. 搜集了一些AIDA64的GPGPU测试结果,现整理成表格共享
  8. java short 写法_Java Short类shortValue()方法及示例
  9. 2022东北四省赛 F. Tree Path (树剖 + 线段树维护堆)
  10. Python报错日志:Warnings模块简介
  11. 【C语言】大厂指针笔试题(1码+1图)详解——程序结果判断题
  12. 根据身高体重计算BMI指数 - scala
  13. android拓展内存卡,都取消存储卡拓展,而它却解决了安卓手机的大问题
  14. 抠图扣发丝ps修图扣证件照p图扣毛发
  15. VueUse(中文)——简介
  16. 讯搜 配置mysql_迅搜创建数据库索引
  17. 网关gataway的理解
  18. 高泽龙:下一个独角兽来自长租公寓,行业创新极大地释放租赁红利
  19. 试给每个局域网分配一个合适的网络前缀
  20. 共享超级蜘蛛池,使用经验和技巧。

热门文章

  1. 安卓学习 之 概述(一)
  2. JavaScript的运动——加速运动篇
  3. 天平应什么放置_天平是否应该放干燥剂?
  4. oracle转成整型_Oracle中如何用SQL把字符串转换成整型
  5. mysql删除属性_SQL语句处理一些修改、新增、删除、修改属性操作(MySql)
  6. shell函数与数组(了解函数,递归函数运用,了解数组,创建基数和偶数数组,冒泡排序,调试命令)
  7. android自定义滤镜,【Android】自定义View那点事(三)ColorFilter篇
  8. java拦截器_Java工程师年底跳槽高潮即将到来,斩获满意offer的必备技巧(二)
  9. C语言面试题分享(6)
  10. mac开启64位内核