25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

57 lines
1.2 KiB

  1. try:
  2. from collections.abc import MutableSet
  3. except ImportError:
  4. from collections import MutableSet
  5. class SetMixin(MutableSet):
  6. """
  7. Mix-in for sets. You must define __iter__, add, remove
  8. """
  9. def __len__(self):
  10. length = 0
  11. for item in self:
  12. length += 1
  13. return length
  14. def __contains__(self, item):
  15. for has_item in self:
  16. if item == has_item:
  17. return True
  18. return False
  19. issubset = MutableSet.__le__
  20. issuperset = MutableSet.__ge__
  21. union = MutableSet.__or__
  22. intersection = MutableSet.__and__
  23. difference = MutableSet.__sub__
  24. symmetric_difference = MutableSet.__xor__
  25. def copy(self):
  26. return set(self)
  27. def update(self, other):
  28. self |= other
  29. def intersection_update(self, other):
  30. self &= other
  31. def difference_update(self, other):
  32. self -= other
  33. def symmetric_difference_update(self, other):
  34. self ^= other
  35. def discard(self, item):
  36. try:
  37. self.remove(item)
  38. except KeyError:
  39. pass
  40. @classmethod
  41. def _from_iterable(cls, it):
  42. return set(it)