|
|
- from collections import KeysView, ItemsView, ValuesView
-
-
- class SillyInt(int):
-
- def __add__(self, num):
- return 0
-
-
- a = SillyInt(1)
- b = SillyInt(2)
- print("{} + {} = {}".format(a, b, a+b))
-
-
- class DictSorted(dict):
-
- def __new__(*args, **kwargs):
- new_dict = dict.__new__(*args, **kwargs)
- new_dict.ordered_keys = []
- return new_dict
-
- def __setitem__(self, key, value):
- """self[key] = value syntax"""
- if key not in self.ordered_keys:
- self.ordered_keys.append(key)
- super().__setitem__(key, value)
-
- def setdefault(self, key, value):
- if key not in self.ordered_keys:
- self.ordered_keys.append(key)
- return super().setdefault(key, value)
-
- def keys(self):
- return KeysView(self)
-
- def values(self):
- return ValuesView(self)
-
- def items(self):
- return ItemsView(self)
-
- def __iter__(self):
- """for x in self syntax"""
- return self.ordered_keys.__iter__()
|