嗨,我是压倒一切的__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
or False
比较符号何时改变?
该公约为__cmp__
is:
a < b : return -1
a = b : return 0
a > b : return 1
这当然只有在两者都存在的情况下才有意义a
and b
是兼容的类型,比如数字。如果你有一个“极端情况”,哪里a
or b
要么没有,要么不兼容(not instanceof
),你应该报告一个错误,因为这是一个编程错误use你的比较运算符someClass
实例。
可以实施any行为与__cmp__
,但是与 OP 描述的方式 None 进行比较最终会导致奇怪的行为和错误。
也可以看看:__lt__ 而不是 __cmp__ https://stackoverflow.com/q/1061283/1689451
http://docs.python.org/reference/datamodel.html#object.__cmp__
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)