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

python3运行这个报错?

提示这个?

TypeError: '<' not supported between instances of 'Student' and 'Student'

怎么解决?

正在回答

4 回答

python3需要改一下

import functools


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__

    # 重写魔术方法 __cmp__ 排序规则:按照分数从高到底排序,分数相同的按名字排序。
    # python3 失效


def my_cmp(self, s):
    if self.score > s.score:
        return -1
    elif self.score < s.score:
        return 1
    else:
        if self.name < s.name:
            return -1
        elif self.name > s.name:
            return 1
        else:
            return 0


L = [Student('Tim', 99), Student('Bob', 88), Student('Alice', 99)]
print(sorted(L, key=functools.cmp_to_key(my_cmp)))


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

版本更新了,导致有些已经有变化了,所以会报错

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

python3会报这个错,python2是正常的。不知道为啥

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

<不支持两个Student实例之间进行比较,应该是self.score > s.score这种格式,你看是不是哪里粗心写错了

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

举报

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

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

进入课程

python3运行这个报错?

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