Если я создаю свой собственный класс в Python, какую функцию я должен определить, чтобы разрешить использование оператора «in», например
class MyClass(object):
...
m = MyClass()
if 54 in m:
...
python
operator-overloading
operators
in-operator
astrofrog
источник
источник
is
иis not
оператор. Какquery = tinydb.Query().field == value
, чтобы также иметь возможность писатьQuery().field is not None
. Но, кажется, я остался на время__eq__
и на__ne__
какое-то время, что ведет к непифонииQuery().field != None
. (сарка)Ответы:
MyClass.__contains__(self, item)
источник
Более полный ответ:
Здесь вы получите True, когда спросите, было ли 54 в m:
Смотрите документацию по перегрузке
__contains__
.источник
Возможно, вы также захотите взглянуть на инфраструктуру переопределения инфиксных операторов, которую я смог использовать для создания языка для конкретного домена:
http://code.activestate.com/recipes/384122/
источник