stylistic question -- optional return value

Stefan Schwarzer sschwarzer at sschwarzer.net
Wed Aug 28 16:12:27 EDT 2002


Hi Andrew

Andrew Koenig wrote:
> Hans> Still, I believe that rewriting the function (or splitting it up)
> Hans> might be a better idea. <0.3 wink>
> 
> I've considered that, and I really don't think it works in this case.

A variant of returning a tuple but with more readability could be:

-----
# you may use another name
class ValueWithDebugInfo:
     pass

class X:
     def do_something(self):
         ...
         result = ValueWithDebugInfo()
         result.that_what_i_want = ...
         result.debug_info = ...
         return result
-----

> You might think of the optional result as being similar to debugging
> information -- you really don't want to put the code that getnerates
> debugging information into a separate function, because then it will
> surely diverge from the code about which it is providing the information.

If you need it for debugging I rather recommend other approaches. How about

-----
class X:
     def __init__(self):
         self._debug_log = []
         ...

     def do_something(self):
         ...
         self._debug_log.append(debug_info)
         return result

x = X()
y = x.do_something()
print x._debug_log   # what has happened?
-----

Stefan




More information about the Python-list mailing list