Problem of Readability of Python

Steven Bethard steven.bethard at gmail.com
Sun Oct 7 20:14:57 CEST 2007


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



More information about the Python-list mailing list