重写Python's 'in'运营商吗?

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

class MyClass(object):
...


m = MyClass()


if 54 in m:
...
98243 次浏览

一个更完整的答案是:

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__的文档