Что именно проверяет ключевое слово in
в python, вообще?равенство, идентичность, что-то еще?
Пример:
Предположим, у меня есть два класса X и Y с разными __eq__
операторами
class X:
def __eq__(self,other):
return False
class Y:
def __eq__(self,other):
return True
Теперь я могу сделать
a = X()
b = a
k = [a]
b in k # -> True
Это предполагает проверку на идентичность для меня.
Но я также могу сделать
c = Y()
d = Y()
c is d # -> False
l = [d]
c in l # -> True
, которая предлагает проверку на равенство.Единственная теория, которую я выдвинул, состоит в том, что она сначала проверяет идентичность, а если это не так, то проверяет равенство.Это правильно?