Trying to understand a little python

McCarty, Greg Greg.McCarty at
Mon Dec 6 20:26:57 CET 2004

Ok, I'm new to python, and I'm trying to come to grips with a few
things.  Got

lots of years of experience with Java and asp/aspx, etc.  Trying to

Python's behavior to what I already know.


Here's the python code (line #'s added for my question) -


01 class Tester:

02     def __init__ (self):

03         print "I'm initializing Tester"


05 def test(klass=Tester):

06     klass.stuff = "setting stuff"

07     print "I'm in test: " + klass.stuff


09 test()          # results 1: I'm in test: setting stuff

10 a=Tester()      # results 2: I'm initializing Tester

11 a.stuff         # results 3: 'setting stuff'

12 b=Tester()      # results 4: I'm initializing Tester

13 b.stuff         # results 5: 'setting stuff'

14 a.stuff="changed!"

15 b.stuff         # results 6: 'setting stuff'

16 a.stuff         # results 7:'changed!'


And here's my questions -


Line 09 - I expected the default argument assignment of line 05 to 

create an object of type Tester and assign it to the var klass.  Thus I

expected Tester.__init__ to fire, which it didn't.  What does

actually do on line 05?


Line 10 - Seems that the syntax 'Tester()' actually causes the __init__
method to 

fire.  Is this the only case?


Line 12 - At this point, I was thinking of Tester.stuff as a static

of the Tester class.


Line 15 - We'll, I guess stuff isn't a static variable!  What is the

explanation here?


Thanks for any help.


Greg McCarty

Senior Technical Advisor / ManTech IST

ph:  410-480-9000 x2804 or 703-674-2804    fx: 410-480-0916


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the Python-list mailing list