Переопределить оператор Python 'in'? Если я создаю свой собственный класс в Python, какую функцию я должен определить, чтобы разрешить использование оператора "in", например class MyClass(object): ... m = MyClass() if 54 in m: ... Ответ 1 MyClass.__contains__(self, item) Ответ 2 Более полный ответ: 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: >>> m = MyClass() >>> 54 in m True См. документация по перегрузке __contains__. Ответ 3 Вы также можете взглянуть на структуру переопределения оператора infix, которую я смог использовать для создания языка, специфичного для домена: http://code.activestate.com/recipes/384122/
Ответ 2 Более полный ответ: 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: >>> m = MyClass() >>> 54 in m True См. документация по перегрузке __contains__.
Ответ 3 Вы также можете взглянуть на структуру переопределения оператора infix, которую я смог использовать для создания языка, специфичного для домена: http://code.activestate.com/recipes/384122/