读书人

关于 _cmp_ 函数的疑义

发布时间: 2013-01-05 15:20:39 作者: rapoo

关于 __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

读书人网 >perl python

热点推荐