if (a == 1 and a == 2 and a == 3):
在Python中,对于变量“ a”,是否有可能上述if语句为true? 如果是这样,怎么可能?
答案 0 :(得分:6)
如果定义简并的__eq__
,则可能是这样:
class A:
def __eq__(self, other):
return True
a = A()
if a == 1 and a == 2 and a == 3:
print('equal')
else:
print('not equal')
打印:
equal
答案 1 :(得分:0)
Everything in Python is an object和==
运算符实际上等效于magic method __eq__
。
调用1 == 2
等效于(1).__eq__(2)
,而您自己的用于定制类的==
可以实现为:
class Number(object):
def __init__(self, x):
self.x = x
def __eq__(self, y):
return self.x == y
a = Number(1)
a == 2 # False
答案 2 :(得分:0)
我使用生成器/协程来模拟这种行为。
因此,如果在用户空间级别上,有机会使用协程(Coroutine)来更改a
的值,那么我认为,如果使用os级线程,则肯定有机会在{{ 1}},因为它不是原子的。
a == 1 and a == 2 and a == 3