Problem of Readability of Python

Steven Bethard steven.bethard at gmail.com
Sun Oct 7 14:48:45 EDT 2007


George Sakkis wrote:
> 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
> 
> 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



More information about the Python-list mailing list