Serdar Tumgoren wrote:
An "if" test would be more readable, I agree.  But I was trying to
apply the "Easier to Ask Permission Forgiveness" style, discussed in
the Python Cookbook: ,

Err..."Easier to Ask Forgiveness than Permission" approach is what I
meant (perhaps proving my point about not fully understanding the
technique!)

I certainly understand the concept and use it often. But the main time to use it is when it can avoid interrupting the normal flow for normal operation. For example, if you define a function that doesn't return unless it has a valid result (for invalid, it raises an exception), then the calling function doesn't need to explicitly check the result. That might permit one to embed the first function call into a more complex expression without having to decompose it to test for errors at various points.

If the first function were written that way (raise, rather than returning None), then we could change from:

   def add_name(self):
       name = result_of_SPECIALIZED_SQLcall_for_child()
       try:
           name + ''
           self.name =ame
       except TypeError:
           #default to the superclass's add_name method
           super(Child, self).add_name()

to:

   def add_name(self):
       try:
           self.name = result_of_SPECIALIZED_SQLcall_for_child()
       except SpecialSQLError:
           #default to the superclass's add_name method
           super(Child, self).add_name()


still not really worth it, but it's getting there. And notice it's shorter, and especially so in the normal path.

DaveA

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to