Python 中的 __contains__ 方法

Hemank Mehtani 2021年10月2日
Python 中的 __contains__ 方法

Python __contains__ 是 Python 中 String 类的一个方法。它可以检查给定的子字符串是否是字符串的一部分。

这是一种神奇的方法。此类方法不打算显式调用,而是作为其他内置操作的一部分调用。在这种情况下,__contains__ 方法与 in 运算符相关联。

__contains__ 函数定义了实例在 in 运算符右侧的行为 - in 运算符检查给定值是否存在于序列中。

例如,

str1 = "Delftstack"
str2 = "Del"

val = str1.__contains__(str2)
print(val)

输出:

True

在上面的示例中,我们使用 __contains__ 方法检查了给定的子字符串是否存在于字符串中。

魔法方法是在类内部调用的。我们可以在类中使用 __contains__ 方法,该方法将调用它来执行某些操作。

当与类关联时,我们可以重载它以返回一些其他值。

例如,

class abc(object):

    name = 'Delftstack'

    def __contains__(self, m):
        if self.name: 
            return False

b = abc()
print('stack' in b)

输出:

False

在上面的例子中,如果子字符串在字符串中,我们让 __contains__ 方法返回 False。由于在使用 in 运算符时会调用它,因此即使字符串 stack 出现在 Delftstack 中,最终输出也是 False。