Skip to content

Instantly share code, notes, and snippets.

@devdoomari3
Created December 3, 2018 06:52
Show Gist options
  • Save devdoomari3/3e6e9e8177d2ff97c4ef0091209984f5 to your computer and use it in GitHub Desktop.
Save devdoomari3/3e6e9e8177d2ff97c4ef0091209984f5 to your computer and use it in GitHub Desktop.
TypedDictPlaceHolder.py
# for https://github.com/Instagram/MonkeyType/issues/105
class TypedDictPlaceHolder(dict):
def __init__(self, **kwargs):
super().__init__(**kwargs)
for (key, value) in kwargs.items():
self.__dict__[key] = value
def __setitem__(self, key, item):
self.__dict__[key] = item
def __getitem__(self, key):
return self.__dict__[key]
def __repr__(self):
return repr(self.__dict__)
def __len__(self):
return len(self.__dict__)
def __delitem__(self, key):
del self.__dict__[key]
def clear(self):
return self.__dict__.clear()
def copy(self):
return self.__dict__.copy()
def has_key(self, k):
return k in self.__dict__
def update(self, *args, **kwargs):
return self.__dict__.update(*args, **kwargs)
def keys(self):
return self.__dict__.keys()
def values(self):
return self.__dict__.values()
def items(self):
return self.__dict__.items()
def pop(self, *args):
return self.__dict__.pop(*args)
def __cmp__(self, dict_):
return self.__cmp__(self.__dict__, dict_)
def __contains__(self, item):
return item in self.__dict__
def __iter__(self):
return iter(self.__dict__)
test1 = TypedDictPlaceHolder(
a=1,
b=2,
)
test2 = TypedDictPlaceHolder(**{
'a': 1,
'b': 3,
})
import json
print(json.dumps(test2))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment