首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

关于 _cmp_ 函数的疑义

2013-01-05 
关于 __cmp__ 函数的疑问各位大虾:对于以下程序:class Sample:def __cmp__(self, x):print x , xif x

关于 __cmp__ 函数的疑问
各位大虾:

对于以下程序:

class Sample:
        def __cmp__(self, x):
            print "x =", x
            
            if x > 0 : ret = 1;
            elif x < 0 : ret = -1;
            else: ret = 0
            
            print "ret =", ret
            return ret


    sample = Sample()
    
    print("---")
    compare_result = (sample > -2)
    print "sample > -2, compare_result = ", compare_result
        
    print("---")
    compare_result = (sample < -2)
    print "sample < -2, compare_result = ", compare_result
    
    print("---")
    compare_result = (sample > 2)
    print "sample > 2, compare_result = ", compare_result
        
    print("---")
    compare_result = (sample < 2)
    print "sample < 2, compare_result = ", compare_result
    
    print("---")
    compare_result = (sample > 1)
    print "sample > 1, compare_result = ", compare_result
        
    print("---")
    compare_result = (sample < 1)
    print "sample < 1, compare_result = ", compare_result
    
    print("---")
    compare_result = (sample == 1)
    print "sample == 1, compare_result = ", compare_result
        
    print("---")
    compare_result = (sample == 0)
    print "sample == 0, compare_result = ", compare_result


输出结果是:


---
x = -2
ret = -1
sample > -2, compare_result =  False
---
x = -2
ret = -1
sample < -2, compare_result =  True
---
x = 2
ret = 1
sample > 2, compare_result =  True
---
x = 2
ret = 1
sample < 2, compare_result =  False
---
x = 1
ret = 1
sample > 1, compare_result =  True


---
x = 1
ret = 1
sample < 1, compare_result =  False
---
x = 1
ret = 1
sample == 1, compare_result =  False
---
x = 0
ret = 0
sample == 0, compare_result =  True

请问:
为什么第一个结果 compare_result =  False ? 
谢谢!
[解决办法]
很正常啊,返回-1,说明 sample<x,你用 sample>x 测试自然返回 False

热点排行