嗨,我正在重写__cmp__。如果传递的第二个对象是None,或者它不是someClass的实例,那么它返回-1。
我不明白这里到底发生了什么。
class someClass():
def __cmp__(self, obj):
if obj == None:
return -1
if not isinstance(obj, someClass):
return -1 我的测试功能:
def test_function(self):
obj1 = someClass()
self.assertTrue(obj1 < None)
# I get true.
self.assertTrue(obj1 > None)
# I get failure as False is returned.有谁能向我解释一下:
True还是False?发布于 2012-10-16 06:59:50
当obj为None时,程序将返回-1,而返回负整数意味着self < obj,因此obj1 < None是True,obj1 > None是false。
发布于 2012-10-16 06:58:29
如果您查看python 文档,您将看到cmp函数返回-1 If self < other。
从__cmp__(obj, None) == -1开始,它就假设obj < None。
我猜如果__cmp__(obj, None)应该返回1,因为任何对象都优于任何对象:)
https://stackoverflow.com/questions/12908933
复制相似问题