Advertisement
Woobinda

Паттерн Итератор (iter)

May 21st, 2018
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.78 KB | None | 0 0
  1. class Bag:
  2.     def __init__(self, items=None):
  3.         self.__bag = {}
  4.         if items is not None:
  5.             for item in items:
  6.                 self.add(item)
  7.     def add(self, item):
  8.         self.__bag[item] = self.__bag.get(item, 0) + 1
  9.     def __delitem__(self, item):
  10.         if self.__bag.get(item) is not None:
  11.             self.__bag[item] -= 1
  12.             if self.__bag[item] <= 0:
  13.                 del self.__bag[item]
  14.         else:
  15.             raise KeyError(str(item))
  16.     def count(self, item):
  17.         return self.__bag.get(item, 0)
  18.     def __len__(self):
  19.         return sum(count for count in self.__bag.values())
  20.     def __contains__(self, item):
  21.         return item in self.__bag
  22.     def __iter__(self):
  23.         items = []
  24.         for item, count in self.__bag.items():
  25.             for _ in range(count):
  26.                 items.append(item)
  27.         return iter(items)
  28.  
  29.  
  30. Example:
  31. bag = Bag('first', 'first', 'second')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement