Cameron Laird wrote: > Guys, I try--I try *hard*--to accept the BetterToAskForgiveness > gospel, but this situation illustrates the discomfort I consistently > feel: how do I know that the NameError means VARIABLE didn't resolve, > rather than that it did, but that evaluation of commands.VARIABLE() > itself didn't throw a NameError? My usual answer: umm, unless I go > to efforts to prevent it, I *don't* know that didn't happen.
two notes: 1) getattr() raises an AttributeError if the attribute doesn't exist, not a NameError. 2) as you point out, doing too much inside a single try/except often results in hard- to-find errors and confusing error messages. the try-except-else pattern comes in handy in cases like this: try: f = getattr(commands, name) except AttributeError: print "command", name, "not known" else: f() </F> -- http://mail.python.org/mailman/listinfo/python-list