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

为什么下面正确代码运行出现这种错误?请大家为我解答,谢谢!!!

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):
        if False == isinstance(s, Student):
            return -1
        return -cmp(self.score, s.score) or cmp(self.name, s.name)

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

print (sorted(L))

错误类型:TypeError: '<' not supported between instances of 'Student' and 'Student'

正在回答

3 回答

在Python 3.x, 取消了 cmp 参数, 只保留了Key Function参数。正确代码如下:

12= [Student('Tim'99), Student('Bob'88), Student('Alice'99)]print (sorted(L, key=lambda student:(student.score,student.name)))#优先按照score,其次按照name


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

这是在python3运行吧

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

代码没问题,可以运行啊 害我看了半天

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

举报

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

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

进入课程

为什么下面正确代码运行出现这种错误?请大家为我解答,谢谢!!!

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