I have created the following class definition with the idea of making a clean syntax for non-programmers to created structured data within a python environment.
I would appreciate comments on this code. First, is something like this already done? Second, are there reasons for not doing this? If this seems OK, how could I clean up the string conversion to have indented format. The expected use would have all items in the structure be simple python types or AttrClass types. Code written in python could walk the structure in a simple way to locate any desired values. Code in a C/C++ extension should also be able to walk the structure to use any value in the structure. class AttrClass(object): """AttrClass lets you freely add attributes in nested manner""" def __init__(self): pass def __setitem__(self, key, value): return self.__dict__.__setitem__(key, value) def __repr__(self): return "%s(%s)" % (self.__class__.__name__, self.__dict__.__repr__()) def __str__(self): ll = ['{'] for k,v in self.__dict__.iteritems(): ll.append("%s : %s" % (k, str(v))) return '\n'.join(ll) + '}' def test(): atr = AttrClass() atr.first = 1 atr.second = 2 atr.third = 'three' atrsub = AttrClass() atrsub.aaa = 'AAA' atrsub.bbb = 'BBB' atr.fourth = atrsub atr.fifth = 5 print atr print print repr(atr) print print atr.fourth.aaa ========= test() gives the following output: ---- { second : 2 fifth : 5 fourth : { aaa : AAA bbb : BBB} third : three first : 1} AttrClass({'second': 2, 'fifth': 5, 'fourth': AttrClass({'aaa': 'AAA', 'bbb': 'BBB'}), 'third': 'three', 'first': 1}) AAA ---- Ken Newton -- http://mail.python.org/mailman/listinfo/python-list