我需要一个Python对象,在与它进行比较时总是评估为True
。例如,如果此对象被称为TRUE
,那么:
TRUE == 10
TRUE == False
TRUE == True
TRUE == "hello"
TRUE == list()
是否有内置的Python对象?
注意我要求内置对象。如果我要检查x == y
数百次,y
更改,x
是否已设置和取消设置,那么对于未设置的实例,我希望{ {1}}评估为x == y
。 (当设置True
时,我想要执行实际的比较操作)
我认为python可能有一个优化的内置对象。
答案 0 :(得分:1)
我需要一个python对象,在与它进行比较时总是计算为。
不,你没有。证明:假设存在这样的值TRUE。然后,对于所有x,表达式TRUE == x
等同于True
。因此,整个表达式可以替换为True
。
重载__eq__
使其简单地返回True
。
如果你想要一个对某个对象总是求值为True的表达式,那么这可能是一个更好的方法:
class AlwaysTrue():
pass
l = [1,2,3,4,5,AlwaysTrue(),7,8,AlwaysTrue()]
search_value = 6
for x in l:
if x == search_value or isinstance(x, AlwaysTrue):
print('Value found!')
break
请注意,6不在列表中,但仍会打印“找到值!”
答案 1 :(得分:1)
class TRUE(object):
def __eq__(self, other):
return True
# no reason to have more that one instance (I think?)
TRUE = TRUE()
print(TRUE == 10)
print(TRUE == False)
print(TRUE == True)
print(TRUE == "hello")
print(TRUE == list())
附录:
正如其他人所指出的那样,TRUE
似乎没有明显的用途。我真的不能想到一个。虽然我可以想象一个类似物体的用途:
class MIN(object):
def __lt__(self, other): return True
def __le__(self, other): return True
def __gt__(self, other): return False
def __ge__(self, other): return False
def __eq__(self, other): return False
MIN = MIN()
如果我尝试测试最小堆,MIN
将始终位于顶部。对于最大堆,它总是在底部。这与队列中元素的类型无关。
答案 2 :(得分:0)
你需要重载运算符,但真的有什么意义呢?
class Custom:
def __eq__(self, other):
return True