Exception style (was: calling python functions using variables)
Cameron Laird
claird at lairds.us
Fri May 19 10:41:13 EDT 2006
In article <126rjus43k450df at corp.supernews.com>,
Grant Edwards <grante at visi.com> wrote:
>On 2006-05-19, bruno at modulix <onurb at xiludom.gro> wrote:
>
>>> Either deal with the resulting NameError exception (EAFP[0])
>>
>> try:
>> getattr(commands, VARIABLE)()
>> except NameError:
>> print >> sys.stderr, "Unknown command", VARIABLE
>>
>>> or test
>>> first whether the attribute exists (LBYL[1]).
>>
>> command = getattr(commands, VARIABLE, None)
>> if command is None:
>> print >> sys.stderr, "Unknown command", VARIABLE
>> else:
>> command()
>>
>> I'd go for the first solution.
>
>Me too. Assuming the user isn't clueless, the normal case is
>where the command exists. Write code for the normal case and
>use the exception that occurs for exceptional cases.
.
.
.
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.
More information about the Python-list
mailing list