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

例子中__cmp__()方法为什么不直接return cmp(self.name, s.name)

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__


    def __cmp__(self, s):

return cmp(self.name, s.name) #这样不是更简洁


L = [Student('Tim', 99), Student('Bob', 88), Student('Alice', 77)]

print sorted(L)


正在回答

3 回答

可以的,结果是一样的

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

多谢回复。你说的是任务里那个题目,先按照分数,再按照名字排序。我说的是任务上面的例子,那个只按照名字排序了。

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

运行结果就可以看出来,运行结果和题目要求不符合:题目要求“按照分数从高到底排序,分数相同的按名字排序。”;你这么写只满足了“按照名字排序”,而先按照分数排序,分数相同时才按照名字排序这个要求未实现。

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

慕粉1758295839 提问者

多谢回复。你说的是任务里那个题目,先按照分数,再按照名字排序。我说的是任务上面的例子,那个只按照名字排序了。
2019-07-18 回复 有任何疑惑可以回复我~
#2

慕粉3943801 回复 慕粉1758295839 提问者

不好意思,是我没看清楚你的问题描述。我觉得你这么写是可以的,例子只是将cmp()方法展开写了,从下文来看作者这么写是为了详细解释比较原理。
2019-07-31 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

例子中__cmp__()方法为什么不直接return cmp(self.name, s.name)

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