****SPAM(11.2)**** [Tutor] Larger program organization
Bob Gailer
bgailer at alum.rpi.edu
Thu Feb 17 20:57:59 CET 2005
At 03:04 PM 2/16/2005, Brian van den Broek wrote:
>Terry Carroll said unto the world upon 2005-02-16 16:18:
>>On Fri, 11 Feb 2005, Bob Gailer wrote:
>>
>>>Whenever you find yourself writing an if statement ask whether this
>>>would be better handled by subclasses. Whenever you find yourself about
>>>to write a global statement, consider making the variables properties of
>>>a class.
>>
>>Bob --
>>Brian already asked for an explanation of your first statement, and I
>>found the ensuing discussion very instructive.
>>Can you explain the second? As an aesthetic point, I hate globals, and
>>I'd love a discussion with some examples of using class variables as a
>>way of avoiding this.
>>Terry
Brian's response is similar to what I'd say.
>Hi Terry and all,
>
>I'm probably not the best person to explain this, but I've got a use case
>that might help illustrate.
>
>The thing that finally got me to write my first Class statement was a
>procedural program where I had a hard to find bug.
>
>I wrote a debug_report function which would print out an informative
>report about the state of all the objects I suspected were implicated in
>the bug. Then, I put debug_report calls at the suspicious places. But, my
>procedural code had function call chains 4 or 5 links deep, and at no
>level did any of the functions have access to all of the objects of interest.
>
>To make it work in purely procedural, I had to either make many objects
>global or litter my functions with passing objects up and down as
>parameters that weren't needed for the function's tasks, but simply so
>debug_report could see them.
>
>I made a class, put my functions in it, and suddenly, they all could `see'
>the objects of interest without the passing and returning of objects just
>for the sake of visibility. Some `self's sprinkled around did the work instead.
>
>So, even if you don't make use of further OOP features (as I am learning
>to do on other threads), classes give you a namespace option between
>globals and locals -- `continentals' if you like ;-)
>
>HTH, and looking forward to more expert explanations,
>
>Brian vdB
>
>_______________________________________________
>Tutor maillist - Tutor at python.org
>http://mail.python.org/mailman/listinfo/tutor
Bob Gailer
mailto:bgailer at alum.rpi.edu
303 442 2625 home
720 938 2625 cell
More information about the Tutor
mailing list