Python比较函数__cmp__

#!/usr/bin/python

class my_type(object):
    def __init__(self, v):
        self.value = v
    def __cmp__(self, v2):
        if self.value > v2.value:
            return 1
        elif self.value == v2.value:
            return 0
        else:
            return -1

if __name__ == ‘__main__‘:
    a = my_type(3)
    b = my_type(4)
    print a > b
    print cmp(a,b)

直接判断a>b内部,调用__cmp__(),如果a>b则返回True,否则返回False。

调用cmp的时候,同样会调用__cmp__(),如果a>b返回1,a==b返回0,否则返回-1.

时间: 2024-10-10 23:40:10

Python比较函数__cmp__的相关文章

python进阶五(定制类)【5-2 python中__cmp__】

python中 __cmp__ 对 int.str 等内置数据类型排序时,Python的 sorted() 按照默认的比较函数 cmp 排序,但是,如果对一组 Student 类的实例排序时,就必须提供我们自己的特殊方法 __cmp__(): 1 class Student(object): 2 def __init__(self, name, score): 3 self.name = name 4 self.score = score 5 def __str__(self): 6 retur

python特殊函数 __cmp__

__cmp__ 对 int.str 等内置数据类型排序时,Python的 sorted() 按照默认的比较函数 cmp 排序,但是,如果对一组 Student 类的实例排序时,就必须提供我们自己的特殊方法 __cmp__(): class Student(object): def __init__(self, name, score): self.name = name self.score = score def __str__(self): return '(%s: %s)' % (self

python中 __cmp__

对 int.str 等内置数据类型排序时,Python的 sorted() 按照默认的比较函数 cmp 排序,但是,如果对一组 Student 类的实例排序时,就必须提供我们自己的特殊方法__cmp__(): class Student(object): def __init__(self, name, score): self.name = name self.score = score def __str__(self): return '(%s: %s)' % (self.name, se

Python之字符串比较is、==、__cmp__

0.str这个class,很常用,也经常可以看到两个字符串,进行is或者==的比较 is 和 ==a.is表示对比的是对象标识符(即内存地址),用来检查对象的标识符是否一致,即两个对象在内存中的地址是否一致(对象首字节的内存地址(你经常看到到的地址要么是十六进制展示的,要么就是十进制的)) b.在使用 strA is strB 的时候,相当于id(strA)==id(strB),因为字符串是不可变对象,所以又有字符串池的概念,所以is对比如果返回True,那么==也一定会返回True 1.==表

Python学习之定制类

本文和大家分享的主要是 python开发中定制类的相关内容,一起来看看吧,希望对大家学习和使用这部分内容有所帮助. 1. python中什么是特殊方法 任何数据类型的实例都有一个特殊方法:  __str__() ·  用于 print 的  __str__ ·  用于 len 的  __len__ ·  用于 cmp 的  __cmp__ ·  特殊方法定义在 class 中 ·  不需要直接调用 · Python 的某些函数或操作符会调用对应的特殊方法 file:///C:\Users\wlc

Python 定制类 特殊方法

1.特殊方法 定义在class中 不需要直接调用,python的某些函数或操作符会自动的调用对应的特殊方法. 如定义了person类,使用print p 语句打印person类的实例时,就调用了特殊方法__str__() 此时就需要在person类中实现这个方法. 使用特殊方法时注意: 只需要编写用到的特殊方法 有关联性的特殊方法都必须实现(如__getattr__,__setattr__,delattr__) 2.python中 __str__和__repr__ __str__()用于显示给用

python __str__ & __repr__ & __cmp__

For ( __str__ ),we going to see a example ... and find who is working for ... #!/usr/bin/python class Person(object): def __init__(self,name,gender): self.name = name self.gender = gender if __name__ == '__main__': p = Person('Frank',23) print p See,

python build-in function __cmp__

读王纯业前辈的笔记遇到个很坑的例子 A namespace is a mapping from names to objects >>> class a:    def __cmp__(self,other):        if other > 0 : print 'other > 0' ;return -1        elif other < 0 : print 'other < 0' ;return 1        else : print 'othe

python sort、sorted高级排序技巧

Python list内置sort()方法用来排序,也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列. 1)排序基础 简单的升序排序是非常容易的.只需要调用sorted()方法.它返回一个新的list,新的list的元素基于小于运算符(__lt__)来排序. 复制代码 代码如下: >>> sorted([5, 2, 3, 1, 4]) [1, 2, 3, 4, 5] 你也可以使用list.sort()方法来排序,此时list本身将被修改.通常此方法不如s