答案here提供了一个手动引用的案例,指出您希望__ne__
返回的内容不仅仅是__eq__
的逻辑反转,但我无法想象案件。有什么例子吗?
答案 0 :(得分:29)
有些图书馆做的很奇怪,并且不会从这些操作中返回bool。例如,使用numpy:
>>> import numpy as np
>>> np.array([1,2,5,4,3,4,5,4,4])==4
array([False, False, False, True, False, True, False, True, True], dtype=bool)
>>> np.array([1,2,5,4,3,4,5,4,4])!=4
array([ True, True, True, False, True, False, True, False, False], dtype=bool)
当您将数组与单个值或另一个数组进行比较时,您会得到一个比较相应元素的结果的bool数组。如果x!=y
仅等同于not (x==y)
,则无法执行此操作。
答案 1 :(得分:29)
SQLAlchemy就是一个很好的例子。对于初学者,SQLAlchemy是一个ORM并使用Python表达式来生成SQL语句。在诸如
之类的表达中meta.Session.query(model.Theme).filter(model.Theme.id == model.Vote.post_id)
model.Theme.id == model.VoteWarn.post_id
不返回布尔值,而是最终生成类似WHERE theme.id = vote.post_id
的SQL查询的对象。逆会产生类似WHERE theme.id <> vote.post_id
的东西,因此需要定义两种方法。
答案 2 :(得分:8)
更一般地说,在many valued logic系统中,equals
和not equals
不一定是彼此完全相反的。
显而易见的例子是SQL True == True
,False == False
和Null != Null
。虽然我不知道是否有任何特定的Python示例,但我可以想象它是在某些地方实现的。