Learning by doing: Reading books and trying to understand the (code) examples
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

43 lines
1000 B

  1. from collections import KeysView, ItemsView, ValuesView
  2. class SillyInt(int):
  3. def __add__(self, num):
  4. return 0
  5. a = SillyInt(1)
  6. b = SillyInt(2)
  7. print("{} + {} = {}".format(a, b, a+b))
  8. class DictSorted(dict):
  9. def __new__(*args, **kwargs):
  10. new_dict = dict.__new__(*args, **kwargs)
  11. new_dict.ordered_keys = []
  12. return new_dict
  13. def __setitem__(self, key, value):
  14. """self[key] = value syntax"""
  15. if key not in self.ordered_keys:
  16. self.ordered_keys.append(key)
  17. super().__setitem__(key, value)
  18. def setdefault(self, key, value):
  19. if key not in self.ordered_keys:
  20. self.ordered_keys.append(key)
  21. return super().setdefault(key, value)
  22. def keys(self):
  23. return KeysView(self)
  24. def values(self):
  25. return ValuesView(self)
  26. def items(self):
  27. return ItemsView(self)
  28. def __iter__(self):
  29. """for x in self syntax"""
  30. return self.ordered_keys.__iter__()