重写Python的“in”运算符?

bf1o4zei  于 2023-01-01  发布在  Python
关注(0)|答案(3)|浏览(133)

如果我正在用Python创建自己的类,我应该定义什么函数才能允许使用in操作符,例如

class MyClass(object):
    ...

m = MyClass()

if 54 in m:
    ...
1zmg4dgp

1zmg4dgp2#

更完整的答案是:

class MyClass(object):

    def __init__(self):
        self.numbers = [1,2,3,4,54]

    def __contains__(self, key):
        return key in self.numbers

在这里,当你问54是否在m中时,你会得到True

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

请参见有关重载__contains__的文档。

bfhwhh0e

bfhwhh0e3#

另一种获得所需逻辑的方法是实现__iter__
如果你不重载__contains__,python会使用__iter__(如果它被重载了)来检查你的数据结构是否包含指定的值。

相关问题