****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