Python中基类object提供了一系列可以用于实现同类对象进行“比较”的方法,可以用于同类对象的不同实例进行比较,包括__lt__、__gt__、__le__、__ge__、__eq__和__ne__六个方法。
那么为什么叫“富比较”(“rich comparison”)方法呢?查了相关资料,并没有看到权威的定义,老猿结合网上零星的资料,分析原因如下:

  1. Python2.1以前的比较方法只提供一个__cmp__方法,没有__lt__等6个方法,相对__cmp__一个方法来说,现在的比对方法种类丰富了,Python 2.1引入了富比较方法,Python3.4之后作废了__cmp__方法;
  2. 比较方法除了简单的比较大小之外,还可以用于排序,从Python2.4开始,排序方法sort() 和 函数sorted() 都增加了一个 ‘key’ 参数,用来在进行比较之前指定每个元素上要调用的函数,这个函数的返回值老猿认为只要是任何可比较大小的数据类型(含定义了__lt__方法的自定义类)都可以,这种返回值比单纯的__cmp__三个返回值(0、1、-1)范围更丰富;
  3. 对于支持复杂比较的类,每种比较方法调用对应的独立富比较方法而无需共用一个__cmp__方法,从而比一个__cmp__方法要考虑不同情况的实现简单、运行时性能高效;
  4. 富比较方法可以直接映射到对应的操作符如“<”,操作更方便简洁。
    以上分析,不知是否正确和全面,请各位大拿指教。

关于富比较方法的介绍请大家参考:
1、《第8.21节 Python中__lt__、__gt__等 “富比较”(“rich comparison”)方法用途探究》
2、《第8.22节 Python案例详解:重写 “富比较”方法控制比较逻辑》。

老猿Python,跟老猿学Python!
博客地址:https://blog.csdn.net/LaoYuanPython
请大家多多支持,点赞、评论和加关注!谢谢!

转载于:https://www.cnblogs.com/LaoYuanPython/p/11166832.html

为什么Python中称__lt__、__gt__等为“富比较”方法相关推荐

  1. 第8.23节 Python中使用sort/sorted排序与“富比较”方法的关系分析

    一. 引言 <第8.21节 Python中__lt__.gt__等 "富比较"("rich comparison")方法用途探究>和<第8.2 ...

  2. 第7.26节 Python中的@property装饰器定义属性访问方法getter、setter、deleter 详解

    第7.26节 Python中的@property装饰器定义属性访问方法getter.setter.deleter 详解 一.    引言 Python中的装饰器在前面接触过,老猿还没有深入展开介绍装饰 ...

  3. python中常见的三种选择结构_在Python中,实现多分支选择结构的最佳方法是

    在Python中,实现多分支选择结构的最佳方法是 答:if-elif-else 绘制建筑平面图时,被剖切的墙用 线绘制,定位轴线用 线绘制 答:粗实 细点画 智慧职教: 下列关于书写住院病历的叙述不正 ...

  4. 介绍python中几种遍历列表的for循环方法

    我们在使用列表的过程中,经常需要遍历列表的所有元素,对每个元素执行相同的操作.今天就给大家介绍python中几种遍历列表的for循环方法. 首先我们先构造一个numbers列表,如下: numbers ...

  5. python中用于释放类占用的资源的方法是()_mooc大学英语词汇期末答案

    把两个已有项目放到一起,就是一个新项目,这种项目来源属于(?? ) 答:整合 辩证法同形而上学的斗争 答:是从属于唯物主义同唯心主义的斗争,并同这种斗争交织在一起的 中国大学MOOC: 广义的计划是对 ...

  6. python 读取图片转换为一维向量_对Python中一维向量和一维向量转置相乘的方法详解...

    对Python中一维向量和一维向量转置相乘的方法详解 在Python中有时会碰到需要一个一维列向量(n*1)与另一个一维列向量(n*1)的转置(1*n)相乘,得到一个n*n的矩阵的情况.但是在pyth ...

  7. python同时打开两个文件_在python中使用with打开多个文件的方法

    虽然初恋是java, 可是最近是越来越喜欢python, 所以决定追根溯源好好了解下python的原理,架构等等.小脑袋瓜不太好使,只能记录下慢慢进步吧 使用with打开文件的好处不多说,这里记录一下 ...

  8. python中字符串转成数字的几种方法

    在python列表操作中,面对需要把列表中的字符串转为礼拜的操作,无需强转,通过简单的几步就可以实现,本文介绍python中字符串转成数字的三种方法:1.使用join的方法:2.使用int函数将16进 ...

  9. python中用于释放类占用的资源的方法是()_编写一个简易计算器,要求根据输入的数字和四则运算符号,计算运算结果并输出。_学小易找答案...

    [简答题]20191220 课前作业 新工作页4.1的3-5-3页的填空题,参考教材P135-P144 [简答题]AutoCAD改编视图,尽量不用虚线 1. 主视图采用局部剖,表达右上角小圆筒(及孔) ...

最新文章

  1. jdbc 日期时间相关的类型
  2. 测试ModelAttribute注解
  3. Java SSM 与 SpringBoot
  4. 自定义注解完成数据库切库
  5. Octopress使用中经验总结
  6. C# 操作World生成报告
  7. Spark机器学习之协同过滤算法
  8. 基于PHP构建OAuth 2.0 服务端 认证平台
  9. 计算机刷bios版本,怎么升级Bios?教你快速更新升级Bios
  10. 大数据智能推荐系统原理介绍
  11. 区块链安全保卫战:三分技术,七分管理
  12. 数字货币期货生存指南
  13. 震惊!世界海底光缆分布图!
  14. 简化函数调用之五 :Parameterize Method(令函数携带参数)
  15. python文件处理基础_第六篇:python基础之文件处理
  16. HTML外边框塌陷什么意思,你不知道的CSS(边框塌陷)?
  17. Noip—p1309 瑞士轮
  18. 单片机实现跑马灯c语言程序,用单片机编写几种跑马灯程序
  19. rosbag数据记录工具命令详解
  20. 从云码课堂出来拿12K,女生做Java也挺吃香

热门文章

  1. 每个tabpage中都有一个dategridview_每个女人,都有一个礼服梦
  2. android js 代码混淆工具,好用的JS(Javascript)混淆加密工具-HDS JSObfuscator 2.14版
  3. linux网站如何添加swf支持,linux下安装swftools和openOffice
  4. html表头的标签,HTML 表头单元格标签
  5. 内部类详解————匿名内部类
  6. Linux常用命令~~~
  7. 字谜 java_java - 2字的字谜 - 堆栈内存溢出
  8. 保护眼睛的电脑设置_干货,怎么设置显示器,才能保护好我们的眼睛?
  9. android广播注册源码,android 广播源码简要分析-注册
  10. JAVA.SQL.SQLNONTRANSIENTCONNECTIONEXCEPTION: COULD NOT CREATE CONNECTION TO DATABASE SERVER. ATTEMPT