Если я создаю свой собственный класс в Python, какую функцию я должен определить, чтобы разрешить использование оператора «in», например,
class MyClass(object): ... m = MyClass() if 54 in m: ...
MyClass.__contains__(self, item)
Более полный ответ:
class MyClass(object): def __init__(self): self.numbers = [1,2,3,4,54] def __contains__(self, key): return key in self.numbers
Здесь вы получите True, если спросите, было ли 54 в м:
>>> m = MyClass() >>> 54 in m True
См. документацию по перегрузке __contains__.
__contains__
Возможно, вы также захотите взглянуть на структуру переопределения инфиксных операторов, которую я смог использовать для создания языка, специфичного для домена:
http://code.activestate.com/recipes/384122/