George Sakkis wrote: > 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 > > For immutable records, you may also want to check out the named tuples > recipe: http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/500261
Yep, it's linked in the description of the first recipe. STeVe -- http://mail.python.org/mailman/listinfo/python-list