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__()
|