"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
与迭代器返回的每个值进行比较。
所以我在 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
与迭代器返回的每个值进行比较。