if语句怎么可能?

时间:2019-05-05 09:15:17

标签: python

if (a == 1 and a == 2 and a == 3):

在Python中,对于变量“ a”,是否有可能上述if语句为true? 如果是这样,怎么可能?

3 个答案:

答案 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