Where is CASE?????
Duncan Booth
duncan at rcp.co.uk
Tue Feb 20 10:00:48 EST 2001
"Chris Richard Adams" <chrisa at ASPATECH.COM.BR> wrote in
<mailman.982674921.12321.python-list at python.org>:
>Someone please tell me why I cannot find a CASE statement in the Python
>documentation index...
>
>There is a CASE isn't there???
>
While there are undoubtedly occasions where a CASE statement would be
useful, they are actually much rarer in Python than you might expect. A
large proportion of the instances where you might use CASE can be written
better as a dictionary or an attribute lookup.
For example in most languages if you were to try to handle errors from
opening a web URL, you might reasonably expect to find a case statement
switching on the different error codes you could receive. If you look at the
urllib module you will see that the Pythonic way to do this is to have class
methods with names such as http_error_401, http_error_301, and
http_error_default. When an error code is returned, the appropriate method
is called (or the default method if there is no better match) by using
getattr to look up the method by name. This technique allows the end user to
add their own handler for any error number, even those the original class
knows nothing about.
Another common use for CASE in some languages is when you have created a
structure and put a type field in it. You want to process the object
according to the type field. In any object oriented language (not just
Python), this situation is better handled by including a method in the
object that does the appropriate action for the object's type.
If you post a message outlining the situation where you think you need a
CASE statement you might get suggestions of better (or just different) ways
to solve your particular problem.
More information about the Python-list
mailing list