重载Python的'in'运算符?
如果我在Python中创建自己的类,我应该定义哪个函数,以便可以使用 in
操作符,比如说:
class MyClass(object):
...
m = MyClass()
if 54 in m:
...
另外,可以查看 __contains__ 是做什么的,它可以被谁调用,了解关于 __contains__
的相关问题。
3 个回答
3
另一种实现你想要的逻辑的方法是使用 __iter__
。
如果你没有重写 __contains__
,那么 Python 会使用 __iter__
(如果你重写了它的话)来检查你的数据结构中是否包含指定的值。
276
更完整的答案是:
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__
的文档。
358
MyClass.__contains__(self, item)
这个内容提到的是一个叫做 `__contains__` 的方法,它是 Python 中用来检查某个东西是否在一个对象里的。简单来说,如果你有一个自定义的类,比如 `MyClass`,你可以用这个方法来判断某个特定的项目(`item`)是否存在于这个类的实例中。这个方法通常会在你使用 `in` 关键字时被自动调用,比如说你想检查某个元素是否在一个列表或集合里。