覆盖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一个特定于域的语言: