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

思考题怎么解?

如果list不仅仅包含 Student 类,则 __cmp__ 可能会报错:

L = [Student('Tim', 99), Student('Bob', 88), 100, 'Hello']
print sorted(L)

请思考如何解决。


正在回答

2 回答

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 isinstance(s,Student):
           return cmp(self.name,s.name)
       else:
           return cmp(self.name,s)
L = [Student('Tim', 99), Student('Bob', 88), 100, 'Hello']
print sorted(L)

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

司夜刺客 提问者

非常感谢!虽然还有点蒙
2017-12-17 回复 有任何疑惑可以回复我~

 isinstance(s,Student)  这句是判断s是否是Student类,如果是的话比较【cmp(self.name,s.name)】self.name和s.name的顺序,如果不是Student类则按照name比较。

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

举报

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

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

进入课程

思考题怎么解?

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