| @ -0,0 +1,44 @@ | |||||
| 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__() | |||||