课程
/后端开发
/Python
/python进阶
不明白为什么L中的排序可以用到Student类中定义的__cmp__?
2016-03-02
源自:python进阶 6-3
正在回答
我的理解:sorted()函数也属于特殊方法,它在调用对象时,实际上是调用对象的__cmp__方法,就和print s 实际上调用的是print s.__str__一样
我的理解是,在程序中调用sorted()函数只能比较int、str等内置数据类型。
如果a,b,c都是Student类的实例,在调用sorted(a, b, c)时,由于a,b,c是Student类型的数据,不属于内置类型,因此靠sorted()中的默认cmp函数是无法完成元素之间的比较的。
因此,这里要提供给sorted()函数的cmp函数需要在Student类中提供。这相当于告诉sorted()函数,Student数据类型的变量之间应该是怎样比较大小的。
举报
学习函数式、模块和面向对象编程,掌握Python高级程序设计