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