On Oct 7, 2:14 pm, Steven Bethard <[EMAIL PROTECTED]> wrote: > Licheng Fang wrote: > > Python is supposed to be readable, but after programming in Python for > > a while I find my Python programs can be more obfuscated than their C/C > > ++ counterparts sometimes. Part of the reason is that with > > heterogeneous lists/tuples at hand, I tend to stuff many things into > > the list and *assume* a structure of the list or tuple, instead of > > declaring them explicitly as one will do with C structs. So, what used > > to be > > > struct nameval { > > char * name; > > int val; > > } a; > > > a.name = ... > > a.val = ... > > > becomes cryptic > > > a[0] = ... > > a[1] = ... > > > Python Tutorial says an empty class can be used to do this. But if > > namespaces are implemented as dicts, wouldn't it incur much overhead > > if one defines empty classes as such for some very frequently used > > data structures of the program? > > > Any elegant solutions? > > You can use __slots__ to make objects consume less memory and have > slightly better attribute-access performance. Classes for objects that > need such performance tweaks should start like:: > > class A(object): > __slots__ = 'name', 'val' > > The recipe below fills in the obvious __init__ method for such classes > so that the above is pretty much all you need to write: > > http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/502237 > > STeVe
For immutable records, you may also want to check out the named tuples recipe: http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/500261 George -- http://mail.python.org/mailman/listinfo/python-list