Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗pyOpClIt 103 of 174 menu
◀ ▶

Перебор объекта-коллекции в ООП в Python

Цикл for по объекту сначала вызывает метод __iter__. Он должен вернуть итератор - объект, из которого цикл берет элементы по одному.

Если внутри класса лежит список, часто достаточно вернуть итератор от этого списка через iter:

class Numbers: def __init__(self): self.__data = [1, 2, 3] def __iter__(self): return iter(self.__data)

Создадим объект и переберем числа в цикле:

nums = Numbers() for num in nums: print(num)

Тот же прием работает для объектов сотрудников. Обратите на него внимание - он пригодится вам в дальнейшем:

class Employee: def __init__(self, name): self.name = name class Workers: def __init__(self): self.__data = [ Employee('john'), Employee('smit'), Employee('eric'), ] def __iter__(self): return iter(self.__data)

Переберем сотрудников и выведем имена:

workers = Workers() for worker in workers: print(worker.name)

Так объект объектов перебирают так же, как список: цикл вызывает __iter__, получает итератор и читает из него элементы.

Добавьте __iter__ в класс Numbers. Перебор должен идти через iter от внутреннего списка.

Сделайте __iter__ в классе Workers и выведите имена всех сотрудников в цикле.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить