Problem of Readability of Python

George Sakkis george.sakkis at gmail.com
Sun Oct 7 14:44:56 EDT 2007


On Oct 7, 2:14 pm, Steven Bethard <steven.beth... at gmail.com> 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




More information about the Python-list mailing list