
对于两个物体
a和
b,
__cmp__要求 之一
a < b,
a == b和
a >b是真实的。但是,这可能并非如此:考虑套,它是非常普遍, 这些都不 是真实的,例如
{1, 2, 3}VS {4, 5, 6}。于是
__lt__和朋友介绍了。但这给Python留下了两种单独的排序机制,这有点荒谬,因此在Python 3中删除了灵活性较差的一种。
您实际上不必实现所有六个比较方法。您可以使用
@total_ordering装饰器,仅实现
__lt__和
__eq__。
编辑:还请注意,在排序的情况下,
key函数可能比
cmp:效率更高:在您给出的示例中,Python可能必须调用Python比较函数O(n²)次。但是一个
key函数只需要调用O(n)次,并且如果返回值是内置类型(通常是这样),则O(n²)成对比较将通过C。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)