【发布时间】:2012-10-06 05:06:06
【问题描述】:
嗨,我正在覆盖 __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?
【问题讨论】:
-
类 someClass(): def __cmp__(self, obj):
-
好的,让我编辑问题代码以避免任何混淆
-
无论您看到什么错误,您的比较方法都不会返回 true。这意味着您的比较函数没有定义严格的顺序。
-
你确定
test_function属于someClass吗? -
test_function 写在单独的测试文件中
标签: python