Jeśli tworzę własną klasę w Pythonie, jaką funkcję powinienem zdefiniować, aby umożliwić użycie operatora 'in', np.
class MyClass(object):
...
m = MyClass()
if 54 in m:
...
python
operator-overloading
operators
in-operator
astrofrog
źródło
źródło
is
iis not
. Jak aquery = tinydb.Query().field == value
, także móc pisaćQuery().field is not None
. Ale wydaje mi pozostało__eq__
i__ne__
na razie, co prowadzi do unpythonicQuery().field != None
. (sarc)Odpowiedzi:
MyClass.__contains__(self, item)
źródło
Pełniejsza odpowiedź to:
Tutaj uzyskasz wartość Prawda, gdy zapytasz, czy 54 było wm:
Zobacz dokumentację dotyczącą przeciążenia
__contains__
.źródło
Możesz także rzucić okiem na strukturę zastępowania operatora infix, której mogłem użyć do stworzenia języka specyficznego dla domeny:
http://code.activestate.com/recipes/384122/
źródło