Tim Cook wrote:
I guess I can classify my application(s) as more procedural than
anything else. But I have a question about the best way to handle
something in Python.
When given a mapping of keywords, I want to call a function based on a
certain keyword found when parsing a text file. The mapping looks like
this:
definClassMap={'SECTION':'bldSection','COMPOSITION':'bldComposition','OBSERVATION':'bldObservation','ITEM_TREE':'bldItemTree'}
So if the text file contains 'ITEM_TREE' I want to call bldItemTree
which creates an instance of the class ItemTree.
I currently use an if ..., elif ... construct.
Is there a better, more efficient, more Pythonic way of doing this?
Yes. Create a mapping of keywords to function objects rather than to
function names!
def bldSection(): <whatever>
...
def bldItemTree(): <whatever else>
class_map={
'SECTION':bldSection,
'COMPOSITION':bldComposition,
'OBSERVATION':bldObservation,
'ITEM_TREE':bldItemTree, # trailing comma allows easy additions
}
for word in parselist:
try;
class_map[word]()
except KeyError:
<whatever for non-keys>
tjr
--
http://mail.python.org/mailman/listinfo/python-list