77 lines
1.9 KiB
Python
77 lines
1.9 KiB
Python
# coding=utf-8
|
|
|
|
|
|
class DictProxy(object):
|
|
store = None
|
|
|
|
def __init__(self, d):
|
|
self.Dict = d
|
|
super(DictProxy, self).__init__()
|
|
|
|
if self.store not in self.Dict or not self.Dict[self.store]:
|
|
self.Dict[self.store] = self.setup_defaults()
|
|
|
|
def __getattr__(self, name):
|
|
if name in self.Dict[self.store]:
|
|
return self.Dict[self.store][name]
|
|
return getattr(super(self.DictProxy, self), name)
|
|
|
|
def __cmp__(self, d):
|
|
return cmp(self.Dict[self.store], d)
|
|
|
|
def __contains__(self, item):
|
|
return item in self.Dict[self.store]
|
|
|
|
def __setitem__(self, key, item):
|
|
self.Dict[self.store][key] = item
|
|
self.Dict.Save()
|
|
|
|
def __iter__(self):
|
|
return iter(self.Dict[self.store])
|
|
|
|
def __getitem__(self, key):
|
|
if key in self.Dict[self.store]:
|
|
return self.Dict[self.store][key]
|
|
|
|
def __repr__(self):
|
|
return repr(self.Dict[self.store])
|
|
|
|
def __str__(self):
|
|
return str(self.Dict[self.store])
|
|
|
|
def __len__(self):
|
|
return len(self.Dict[self.store].keys())
|
|
|
|
def __delitem__(self, key):
|
|
del self.Dict[self.store][key]
|
|
|
|
def clear(self):
|
|
del self.Dict[self.store]
|
|
return None
|
|
|
|
def copy(self):
|
|
return self.Dict[self.store].copy()
|
|
|
|
def has_key(self, k):
|
|
return k in self.Dict[self.store]
|
|
|
|
def pop(self, k, d=None):
|
|
return self.Dict[self.store].pop(k, d)
|
|
|
|
def update(self, *args, **kwargs):
|
|
return self.Dict[self.store].update(*args, **kwargs)
|
|
|
|
def keys(self):
|
|
return self.Dict[self.store].keys()
|
|
|
|
def values(self):
|
|
return self.Dict[self.store].values()
|
|
|
|
def items(self):
|
|
return self.Dict[self.store].items()
|
|
|
|
def __unicode__(self):
|
|
return unicode(repr(self.Dict[self.store]))
|
|
|
|
def setup_defaults(self):
|
|
raise NotImplementedError |