当你想让__ne__返回一些东西而不仅仅是__eq__的逻辑逆时,答案here给出了一个挥手的引用,但我无法想象任何这样的情况。有什么例子吗?
发布于 2012-02-27 01:12:17
SQLAlchemy就是一个很好的例子。对于外行来说,SQLAlchemy是一种对象关系映射,它使用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这样的查询的对象。反之将产生类似于WHERE theme.id <> vote.post_id的结果,因此这两种方法都需要定义。
发布于 2012-02-27 01:09:32
一些库做一些奇特的事情,并且不会从这些操作中返回布尔值。例如,使用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)当您将一个数组与单个值或另一个数组进行比较时,您会得到一个布尔数组,其中包含比较相应元素的结果。如果x!=y仅仅等同于not (x==y),那么就不能这样做。
发布于 2012-02-27 02:04:07
更一般地说,在many valued logic系统中,equals和not equals不一定是彼此的完全相反。
最明显的例子是SQL中的True == True、False == False和Null != Null。虽然我不知道是否有任何特定的Python示例,但我可以想象它是在某些地方实现的。
https://stackoverflow.com/questions/9452536
复制相似问题