From 6c66dbd7fb2a5d427824188ed289a186d4c56a74 Mon Sep 17 00:00:00 2001 From: Jameson Graef Rollins <jrollins@finestructure.net> Date: Mon, 9 Jul 2018 18:54:33 -0700 Subject: [PATCH] struct: add more useful dict methods --- gwinc/struct.py | 36 ++++++++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/gwinc/struct.py b/gwinc/struct.py index d1458409..9c34ec86 100644 --- a/gwinc/struct.py +++ b/gwinc/struct.py @@ -75,6 +75,12 @@ class Struct(object): ########## + def __init__(self, **kwargs): + """Arguments can pre-fill the structure + + """ + self.__dict__.update(kwargs) + def __getitem__(self, key): """Get a (possibly nested) value from the struct. @@ -85,11 +91,33 @@ class Struct(object): else: return self.__dict__[key] - def __setitem__(self, item, value): - self.__dict__[item] = value + def get(self, key, default): + """Get a (possibly nested) value from the struct, or default. + + """ + try: + return self[key] + except KeyError: + return default + + def __setitem__(self, key, value): + self.__dict__[key] = value + + def setdefault(self, key, default): + return self.__dict__.setdefault(key, default) + + def items(self): + return self.__dict__.items() + + def keys(self): + return self.__dict__.keys() + + def values(self): + return self.__dict__.values() + + def __contains__(self, key): + return key in self.__dict__ - def __contains__(self, item): - return item in self.__dict__ def to_dict(self, array=False): """Return nested dictionary representation of Struct. -- GitLab