"if x in self:" 是什么意思?

What does "if x in self:" mean?

所以我在 Python 中有一个成员方法,代码段如下:

def foo(self, param):
    x = self._as_array(param)
    if x in self:
        raise KeyError('Data point {} is not unique'.format(x))

这里的if x in self:是什么意思?它没有引用任何成员方法。例如 if x in self._some_array 是有道理的,但仅仅陈述 self 没有任何参考应该是什么意思?

x in y 是一个 Python 语言特性,与 Python data model 中的 __contains__ 方法相关。任何实现该方法的 class 都可以在这样的表达式中使用。

x in y

等同于

y.__contains__(x)

如果 __contains__ 未实现但实例是可迭代的,Python 会将 x 与迭代器返回的每个值进行比较。