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

Reply via email to