Sobes.tech
Back to questions
Junior — Middle
63

Какова роль метода __contains__ в реализации итератора в Python?

Companies where asked
AstonAston

Answer from AI

sobes.tech AI

Метод __contains__ в Python отвечает за проверку принадлежности элемента коллекции и используется оператором in. В контексте итератора или коллекции, если реализовать __contains__, можно определить, как именно проверяется, содержится ли элемент в объекте.

Например, если у вас есть класс, реализующий итератор, и вы хотите поддерживать проверку if item in obj:, нужно реализовать метод __contains__.

Пример:

class MyCollection:
    def __init__(self, items):
        self.items = items

    def __iter__(self):
        return iter(self.items)

    def __contains__(self, item):
        for elem in self.items:
            if elem == item:
                return True
        return False

col = MyCollection([1, 2, 3])
print(2 in col)  # True
print(5 in col)  # False

Таким образом, __contains__ позволяет эффективно реализовать проверку принадлежности, что важно для удобства использования пользовательских коллекций и итераторов.