为了账号安全,请及时绑定邮箱和手机立即绑定

python3怎么办? __cmp__还有吗

python3怎么办? __cmp__还有吗

正在回答

3 回答

from operator import attrgetter
class Student(object):
    def __init__(self,name,score):
        self.name = name
        self.score = score
    def __str__(self):
        return '(%s:%s)'%(self.name,self.score)
    __repr__ = __str__



L = [Student('Tim', 99), Student('Bob', 88), Student('Alice', 99)]
print (sorted(L, key=attrgetter('score', 'name'), reverse=True))


0 回复 有任何疑惑可以回复我~

Python3里cmp没有了,用operator模块里的一系列方法代替,例如operator.lt(a,b)表示判断a<b,operator.gt(a,b)判断a>b,operator.eq(a,b)判断a==b。返回值都是布尔值,其他的还有不等于.ne,大于等于和小于等于.ge .le。以及对应的特殊方法operator.__**__(self, x)。

0 回复 有任何疑惑可以回复我~

官方回答:The cmp() function should be treated as gone, and the __cmp__() special method is no longer supported. Use __lt__() for sorting, __eq__() with __hash__(), and other rich comparisons as needed. (If you really need the cmp() functionality, you could use the expression (a > b) - (a < b) as the equivalent for cmp(a, b).)

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
python进阶
  • 参与学习       255665    人
  • 解答问题       2949    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

python3怎么办? __cmp__还有吗

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信