2
3 """
4 Mix-in for sets. You must define __iter__, add, remove
5 """
6
8 length = 0
9 for item in self:
10 length += 1
11 return length
12
14 for has_item in self:
15 if item == has_item:
16 return True
17 return False
18
20 for item in other:
21 if item not in self:
22 return False
23 return True
24
25 __le__ = issubset
26
28 for item in self:
29 if item not in other:
30 return False
31 return True
32
33 __ge__ = issuperset
34
37
39 new = self.copy()
40 new |= other
41 return new
42
45
47 new = self.copy()
48 new &= other
49 return new
50
53
55 new = self.copy()
56 new -= other
57 return new
58
61
63 new = self.copy()
64 new ^= other
65 return new
66
69
71 for item in other:
72 self.add(item)
73
74 __ior__ = update
75
77 for item in self:
78 if item not in other:
79 self.remove(item)
80
81 __iand__ = intersection_update
82
84 for item in other:
85 if item in self:
86 self.remove(item)
87
88 __isub__ = difference_update
89
91 for item in other:
92 if item in self:
93 self.remove(item)
94 else:
95 self.add(item)
96
97 __ixor__ = symmetric_difference_update
98
100 try:
101 self.remove(item)
102 except KeyError:
103 pass
104
106 for item in list(self):
107 self.remove(item)
108