为什么Python中称__lt__、__gt__等为“富比较”方法
Python中基类object提供了一系列可以用于实现同类对象进行“比较”的方法,可以用于同类对象的不同实例进行比较,包括__lt__、__gt__、__le__、__ge__、__eq__和__ne__
六个方法。
那么为什么叫“富比较”(“rich comparison”)方法呢?查了相关资料,并没有看到权威的定义,老猿结合网上零星的资料,分析原因如下:
- Python2.1以前的比较方法只提供一个__cmp__方法,没有__lt__等6个方法,相对__cmp__一个方法来说,现在的比对方法种类丰富了,Python 2.1引入了富比较方法,Python3.4之后作废了__cmp__方法;
- 比较方法除了简单的比较大小之外,还可以用于排序,从Python2.4开始,排序方法sort() 和 函数sorted() 都增加了一个 ‘key’ 参数,用来在进行比较之前指定每个元素上要调用的函数,这个函数的返回值老猿认为只要是任何可比较大小的数据类型(含定义了__lt__方法的自定义类)都可以,这种返回值比单纯的__cmp__三个返回值(0、1、-1)范围更丰富;
- 对于支持复杂比较的类,每种比较方法调用对应的独立富比较方法而无需共用一个__cmp__方法,从而比一个__cmp__方法要考虑不同情况的实现简单、运行时性能高效;
- 富比较方法可以直接映射到对应的操作符如“<”,操作更方便简洁。
以上分析,不知是否正确和全面,请各位大拿指教。
关于富比较方法的介绍请大家参考:
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__等为“富比较”方法相关推荐
- 第8.23节 Python中使用sort/sorted排序与“富比较”方法的关系分析
一. 引言 <第8.21节 Python中__lt__.gt__等 "富比较"("rich comparison")方法用途探究>和<第8.2 ...
- 第7.26节 Python中的@property装饰器定义属性访问方法getter、setter、deleter 详解
第7.26节 Python中的@property装饰器定义属性访问方法getter.setter.deleter 详解 一. 引言 Python中的装饰器在前面接触过,老猿还没有深入展开介绍装饰 ...
- python中常见的三种选择结构_在Python中,实现多分支选择结构的最佳方法是
在Python中,实现多分支选择结构的最佳方法是 答:if-elif-else 绘制建筑平面图时,被剖切的墙用 线绘制,定位轴线用 线绘制 答:粗实 细点画 智慧职教: 下列关于书写住院病历的叙述不正 ...
- 介绍python中几种遍历列表的for循环方法
我们在使用列表的过程中,经常需要遍历列表的所有元素,对每个元素执行相同的操作.今天就给大家介绍python中几种遍历列表的for循环方法. 首先我们先构造一个numbers列表,如下: numbers ...
- python中用于释放类占用的资源的方法是()_mooc大学英语词汇期末答案
把两个已有项目放到一起,就是一个新项目,这种项目来源属于(?? ) 答:整合 辩证法同形而上学的斗争 答:是从属于唯物主义同唯心主义的斗争,并同这种斗争交织在一起的 中国大学MOOC: 广义的计划是对 ...
- python 读取图片转换为一维向量_对Python中一维向量和一维向量转置相乘的方法详解...
对Python中一维向量和一维向量转置相乘的方法详解 在Python中有时会碰到需要一个一维列向量(n*1)与另一个一维列向量(n*1)的转置(1*n)相乘,得到一个n*n的矩阵的情况.但是在pyth ...
- python同时打开两个文件_在python中使用with打开多个文件的方法
虽然初恋是java, 可是最近是越来越喜欢python, 所以决定追根溯源好好了解下python的原理,架构等等.小脑袋瓜不太好使,只能记录下慢慢进步吧 使用with打开文件的好处不多说,这里记录一下 ...
- python中字符串转成数字的几种方法
在python列表操作中,面对需要把列表中的字符串转为礼拜的操作,无需强转,通过简单的几步就可以实现,本文介绍python中字符串转成数字的三种方法:1.使用join的方法:2.使用int函数将16进 ...
- python中用于释放类占用的资源的方法是()_编写一个简易计算器,要求根据输入的数字和四则运算符号,计算运算结果并输出。_学小易找答案...
[简答题]20191220 课前作业 新工作页4.1的3-5-3页的填空题,参考教材P135-P144 [简答题]AutoCAD改编视图,尽量不用虚线 1. 主视图采用局部剖,表达右上角小圆筒(及孔) ...
最新文章
- jdbc 日期时间相关的类型
- 测试ModelAttribute注解
- Java SSM 与 SpringBoot
- 自定义注解完成数据库切库
- Octopress使用中经验总结
- C# 操作World生成报告
- Spark机器学习之协同过滤算法
- 基于PHP构建OAuth 2.0 服务端 认证平台
- 计算机刷bios版本,怎么升级Bios?教你快速更新升级Bios
- 大数据智能推荐系统原理介绍
- 区块链安全保卫战:三分技术,七分管理
- 数字货币期货生存指南
- 震惊!世界海底光缆分布图!
- 简化函数调用之五 :Parameterize Method(令函数携带参数)
- python文件处理基础_第六篇:python基础之文件处理
- HTML外边框塌陷什么意思,你不知道的CSS(边框塌陷)?
- Noip—p1309 瑞士轮
- 单片机实现跑马灯c语言程序,用单片机编写几种跑马灯程序
- rosbag数据记录工具命令详解
- 从云码课堂出来拿12K,女生做Java也挺吃香
热门文章
- 每个tabpage中都有一个dategridview_每个女人,都有一个礼服梦
- android js 代码混淆工具,好用的JS(Javascript)混淆加密工具-HDS JSObfuscator 2.14版
- linux网站如何添加swf支持,linux下安装swftools和openOffice
- html表头的标签,HTML 表头单元格标签
- 内部类详解————匿名内部类
- Linux常用命令~~~
- 字谜 java_java - 2字的字谜 - 堆栈内存溢出
- 保护眼睛的电脑设置_干货,怎么设置显示器,才能保护好我们的眼睛?
- android广播注册源码,android 广播源码简要分析-注册
- JAVA.SQL.SQLNONTRANSIENTCONNECTIONEXCEPTION: COULD NOT CREATE CONNECTION TO DATABASE SERVER. ATTEMPT