栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么我不能像Python 2一样在Python 3中使用__cmp__方法?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么我不能像Python 2一样在Python 3中使用__cmp__方法?

您需要提供在Python 3订货丰富的比较方法,这是

__lt__
__gt__
__le__
__ge__
__eq__
,和
__ne__
。另请参阅:PEP
207-丰富的比较

__cmp__
不是 不再使用。


更具体地说,

__lt__
self
other
作为参数,并且需要返回是否
self
小于
other
。例如:

class Point(object):    ...    def __lt__(self, other):        return ((self.x < other.x) and (self.y < other.y))

(这不是明智的比较实现,但是很难说出您要做什么。)

因此,如果您有以下情况:

p1 = Point(1, 2)p2 = Point(3, 4)p1 < p2

这等效于:

p1.__lt__(p2)

这将返回

True

__eq__``True
如果点相等
False
则返回,否则返回。其他方法类似地工作。


如果使用

functools.total_ordering
装饰器,则只需实现例如
__lt__
__eq__
方法:

from functools import total_ordering@total_orderingclass Point(object):    def __lt__(self, other):        ...    def __eq__(self, other):        ...


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/624015.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号