# $Id: params_struct.py,v 1.2 2011-03-10 19:21:33 wirawan Exp $ # # wpylib.params.params_struct module # Created: 20110310 # Wirawan Purwanto # """ params_struct.py This module hosts `Struct', the simplest structured datatype, which in python is basically the same as dict. However this syntactic sugar will make your code very much like other high-level language (less mess with a['member'] kind of thing). Also this class will allow us to provide a base class to more specialized classes of similar nature. Other classes that are similar in purpose: * wpylib.params.params_flat.Parameters For assisting parameter lookup in functions. * wpylib.db.result_base For storing result from program output file. CHARACTERISTICS/USAGE PATTERN * Just like dict, it does not enforce a particular structure. * Use words only as keys (i.e. keys are valid python identifiers). * User fields should not use keywords prepended and appended by two underscores (those names are reserved by python). """ class Struct(object): """A simplistic structured datatype. No particular structure is assumed. Results are fetchable by either X.member or X['member'] syntax. Limited dict-like operations are supported.""" def __init__(self, __src__=None, **p): """Initializes the structure. The arguments will be copied into the structure as the initial values of the structure. They can be a dict-like object (first argument), or "key=value"-type argument passing. """ if __src__: self.__dict__.update(__src__) self.__dict__.update(p) def __getitem__(self, item): return self.__dict__[item] def __setitem__(self, item, val): self.__dict__[item] = val def __contains__(self, item): return item in self.__dict__ def __iter__(self): return self.__dict__.__iter__()