GEN*_*NER 2 python class contains
因此,我在Python中具有以下代码段的成员方法:
def foo(self, param):
x = self._as_array(param)
if x in self:
raise KeyError('Data point {} is not unique'.format(x))
Run Code Online (Sandbox Code Playgroud)
这if x in self:是什么意思?它没有引用任何成员方法。例如,if x in self._some_array这是有道理的,但仅说self没有任何参考就意味着什么?
x in y是__contains__与Python数据模型中的方法相关的Python语言功能。可以在此类表达式中使用实现该方法的任何类。
x in y
Run Code Online (Sandbox Code Playgroud)
相当于
y.__contains__(x)
Run Code Online (Sandbox Code Playgroud)
如果__contains__未实现,但实例是可迭代的,则Python将与x从迭代器返回的每个值进行比较。