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

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

Короткий ответ

Что ответить на собеседовании

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

Подробный разбор

Ответ с пояснениями

Метод __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__ позволяет эффективно реализовать проверку принадлежности, что важно для удобства использования пользовательских коллекций и итераторов.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее