Предыдущая реализация класса позволяет ему перебрать самого себя. Это значит, что после перебора контента итерация будет исчерпана и не станет повторяться: >>> count_down = CountDown(4) >>> for element in count_down: ... print(element) ... else: ... print("end")
namedtuple() — функция для создания подклассов кортежей, чьи индексы доступны как именованные атрибуты; • deque — двухсторонняя очередь, обобщение стеков и очередей с быстрым добавлением и извлечением на обоих концах; • ChainMap — похожий на словарь класс для создания единого представления нескольких отображений; • Counter — подкласс словаря для подсчета хешируемых объектов; • OrderedDict — подкласс словаря, в котором сохраняется порядок добавления элементов; •defaultdict — подкласс словаря, который заполняет недостающие значения с помощью определенной пользователем функции.
Множества в CPython очень похожи на словари. По сути дела, они реализованы как словари с фиктивными значениями, где только ключи являются фактическими элементами коллекции. У множеств также не хватает значений в отображении, которые можно было бы оптимизировать.
К счастью, в стандартной библиотеке Python в модуле collections есть упорядоченный словарь OrderedDict. Конструктор этого типа принимает в качестве аргумента инициализации итерируемый тип. Каждый элемент этого аргумента должен быть парой «ключ — значение», как показано в следующем примере: >>> from collections import OrderedDict >>> OrderedDict((str(number), None) for number in range(5)).keys() odict_keys(['0', '1', '2', '3', '4']) У этого типа также есть дополнительные функции, например извлечение элементов с обоих концов с использованием метода popitem() или перемещение указанного элемента на один из концов с помощью метода move_to_end().
методов: •__hash__ — возвращает хеш-значение (целочисленное), которое необходимо для внутренней реализации типа dict. Для объектов — экземпляров пользовательских классов является производным от id(); • __eq__ — проверяет два объекта на предмет одинаковости их