覆盖Python的“in”运算符?

如果我在Python中创build我自己的类,我应该定义什么函数以允许使用“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 

在这里你会得到真正的时候,问54是在米:

 >>> m = MyClass() >>> 54 in m True 

请参阅有关重载__contains__文档 。

您可能还想看看一个中缀运算符覆盖框架,我可以使用它来创build一个特定于域的语言:

http://code.activestate.com/recipes/384122/