246

如果我在 Python 中创建自己的类,我应该定义什么函数以允许使用in运算符,例如

class MyClass(object):
    ...

m = MyClass()

if 54 in m:
    ...
4

3 回答 3

310

MyClass.__contains__(self, item)

于 2010-02-07T14:10:19.473 回答
245

更完整的答案是:

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__

于 2010-02-07T21:26:28.157 回答
7

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

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

于 2010-02-08T22:41:37.427 回答