在python中,对str,int等数据类型进行排序时,使用python内置的sorted()函数里默认的cmp函数对其排序。那如果要对实例对象进行排序,怎么操作呢?此时就要用到特殊方法__cmp__(),在类中对__cmp__()根据要求定义,即可实现对实例对象进行排序。
例子:按照名字,由小到大排序;名字相同时,按照成绩由高到低排序。
以上述例子,具体说下函数__cmp__(self, s):self指向实例,将目前实例对象self的name与又传入的实例对象s的name进行比较。如果self的应该放在前面,返回-1;放在后面的话,返回1;相等的话,返回0。
我的不解:在self.name == s.name时,比较self.score与s.score, self.score>s.score时,返回-1,为啥最后的输出结果还是按照成绩由低到高排序的。
欢迎大家给我留言,一起交流学习。
宝宝今天遇到了不解,更需要大家留言了~~~
我的公众号是: