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

比较时传入的self和s,是按照上面顺序传入的?

def __cmp__(self, s):

        print self.score,s.score

        print self.name,s.name

        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)
88 99
Bob Tim
99 88
Alice Bob
99 88
Alice Bob
99 99
Alice Tim
[(Alice: 99), (Tim: 99), (Bob: 88)]

上面这段程序优先比较前2个,

第一次比较

为啥self是Bob,s是Tim?

第二次比较

为什么self是Alice,s是Bob

难道是按照字母排序传入self,s?



正在回答

1 回答

self是谁主要看是调用的谁的cmp方法,Bob和Tim比较,调用的是Bob的cmp方法。

调用谁的cmp还要看sorted使用的排序算法是什么,

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

举报

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

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

进入课程

比较时传入的self和s,是按照上面顺序传入的?

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