T. Meissner 9 years ago
parent
commit
fcff21703f
1 changed files with 44 additions and 0 deletions
  1. +44
    -0
      python_3_oop/chapter06/extend_built-ins.py

+ 44
- 0
python_3_oop/chapter06/extend_built-ins.py View File

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

Loading…
Cancel
Save