Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import math
- class Container:
- def __init__(self):
- self.items = {}
- def add(self, item):
- self.items[item] = self.items.get(item, 0) + 1
- def remove(self, item):
- self.items[item] = self.items.get(item, 0) - 1
- def __contains__(self, item):
- return item in self.items
- def __len__(self):
- return len(self.items)
- def __iter__(self):
- return iter(self.items)
- def __str__(self):
- return str(self.items)
- def __repr__(self):
- return repr(self.items)
- def __getitem__(self, item):
- return self.items[item]
- def __setitem__(self, item, value):
- self.items[item] = value
- def __delitem__(self, item):
- del self.items[item]
- def __eq__(self, other):
- return self.items == other.items
- def __ne__(self, other):
- return self.items != other.items
- def __lt__(self, other):
- return self.items < other.items
- def __gt__(self, other):
- return self.items > other.items
- def __le__(self, other):
- return self.items <= other.items
- def __ge__(self, other):
- return self.items >= other.items
- def __add__(self, other):
- return Container(self.items + other.items)
- def __sub__(self, other):
- return Container(self.items - other.items)
- def __mul__(self, other):
- return Container(self.items * other)
- def __truediv__(self, other):
- return Container(self.items / other)
- def __floordiv__(self, other):
- return Container(self.items // other)
- def __mod__(self, other):
- return Container(self.items % other)
- def __divmod__(self, other):
- return Container(self.items.divmod(other))
- def __pow__(self, other):
- return Container(self.items ** other)
- def __lshift__(self, other):
- return Container(self.items << other)
- def __rshift__(self, other):
- return Container(self.items >> other)
- def __and__(self, other):
- return Container(self.items & other)
- def __xor__(self, other):
- return Container(self.items ^ other)
- def __or__(self, other):
- return Container(self.items | other)
- def __radd__(self, other):
- return Container(other + self.items)
- def __rsub__(self, other):
- return Container(other - self.items)
- def __rmul__(self, other):
- return Container(other * self.items)
- def __rtruediv__(self, other):
- return Container(other / self.items)
- def __rfloordiv__(self, other):
- return Container(other // self.items)
- def __rmod__(self, other):
- return Container(other % self.items)
- def __rdivmod__(self, other):
- return Container(other.divmod(self.items))
- def __rpow__(self, other):
- return Container(other ** self.items)
- def __rlshift__(self, other):
- return Container(other << self.items)
- def __rrshift__(self, other):
- return Container(other >> self.items)
- def __rand__(self, other):
- return Container(other & self.items)
- def __rxor__(self, other):
- return Container(other ^ self.items)
- def __ror__(self, other):
- return Container(other | self.items)
- def __iadd__(self, other):
- self.items += other.items
- return self
- def __isub__(self, other):
- self.items -= other.items
- return self
- def __imul__(self, other):
- self.items *= other
- return self
- def __itruediv__(self, other):
- self.items /= other
- return self
- def __ifloordiv__(self, other):
- self.items //= other
- return self
- def __imod__(self, other):
- self.items %= other
- return self
- def __ipow__(self, other):
- self.items **= other
- return self
- def __ilshift__(self, other):
- self.items <<= other
- return self
- def __irshift__(self, other):
- self.items >>= other
- return self
- def __iand__(self, other):
- self.items &= other
- return self
- def __ixor__(self, other):
- self.items ^= other
- return self
- def __ior__(self, other):
- self.items |= other
- return self
- def __neg__(self):
- return Container(-self.items)
- def __pos__(self):
- return Container(+self.items)
- def __abs__(self):
- return Container(abs(self.items))
- def __invert__(self):
- return Container(~self.items)
- def __round__(self, n=0):
- return Container(round(self.items, n))
- def __floor__(self):
- return Container(math.floor(self.items))
- def __ceil__(self):
- return Container(math.ceil(self.items))
- def __trunc__(self):
- return Container(math.trunc(self.items))
- def __int__(self):
- return int(self.items)
- def __float__(self):
- return float(self.items)
- def __complex__(self):
- return complex(self.items)
- def __oct__(self):
- return oct(self.items)
- def __hex__(self):
- return hex(self.items)
- def __index__(self):
- return self.items.__index__()
- def __coerce__(self, other):
- return self.items.__coerce__(other)
- def __enter__(self):
- return self.items.__enter__()
- def __exit__(self, exc_type, exc_value, traceback):
- return self.items.__exit__(exc_type, exc_value, traceback)
- def __getattr__(self, name):
- return getattr(self.items, name)
- def __setattr__(self, name, value):
- setattr(self.items, name, value)
- def __delattr__(self, name):
- delattr(self.items, name)
- def __call__(self, *args, **kwargs):
- return self.items(*args, **kwargs)
- def __new__(cls, *args, **kwargs):
- return object.__new__(cls)
- def __hash__(self):
- return hash(self.items)
- def __format__(self, format_spec):
- return self.items.__format__(format_spec)
- def __sizeof__(self):
- return self.items.__sizeof__()
- def __reduce__(self):
- return self.items.__reduce__()
- def __reduce_ex__(self, protocol):
- return self.items.__reduce_ex__(protocol)
- def __getnewargs__(self):
- return self.items.__getnewargs__()
- def __getstate__(self):
- return self.items.__getstate__()
- def __setstate__(self, state):
- self.items.__setstate__(state)
- def __del__(self):
- del self.items
Advertisement
RAW Paste Data
Copied
Advertisement