Ваше предположение об изменении __eq__
верно.Это определенно один из способов сделать это.Вам просто нужно проверить значение аргумента __eq__
с соответствующим атрибутом вашего объекта.Таким образом, в качестве очень простого способа вы можете реализовать что-то вроде следующего:
In [1]: class Foo:
...: def __init__(self, s):
...: self.s = s
...:
...: def __eq__(self, value):
...: return self.s == value
...:
In [2]: bar = Foo('test')
...: ls = [bar]
...:
In [3]: 'test' in ls
Out[3]: True
Обратите внимание, что этот метод __eq__
не имеет никаких ограничений, таких как проверка типов или какая-либо другая обработка ошибок.Если вы считаете, что они необходимы в вашем случае, вы можете рассмотреть возможность использования try-excep
и других проверок условий.
Демо:
In [9]: foo = Foo('test')
In [10]: bar = Foo('test')
In [11]: ls = ['test']
In [12]: bar in ls
Out[12]: True
In [13]: ls = [bar]
In [14]: foo in ls
Out[14]: True