33 lines
951 B
Python
33 lines
951 B
Python
class AttrDict(dict):
|
|
"""A dictionary with attribute-style access. It maps attribute access to
|
|
the real dictionary. """
|
|
def __init__(self, *args, **kwargs):
|
|
dict.__init__(self, *args, **kwargs)
|
|
|
|
def __getstate__(self):
|
|
return self.__dict__.items()
|
|
|
|
def __setstate__(self, items):
|
|
for key, val in items:
|
|
self.__dict__[key] = val
|
|
|
|
def __repr__(self):
|
|
return "%s(%s)" % (self.__class__.__name__, dict.__repr__(self))
|
|
|
|
def __setitem__(self, key, value):
|
|
return super(AttrDict, self).__setitem__(key, value)
|
|
|
|
def __getitem__(self, name):
|
|
if name not in super(AttrDict, self).keys():
|
|
return None
|
|
return super(AttrDict, self).__getitem__(name)
|
|
|
|
def __delitem__(self, name):
|
|
return super(AttrDict, self).__delitem__(name)
|
|
|
|
__getattr__ = __getitem__
|
|
__setattr__ = __setitem__
|
|
|
|
def copy(self):
|
|
return AttrDict(self)
|