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 relate 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" 04 05 def test(klass=Tester): 06 klass.stuff = "setting
stuff" 07 print "I'm in test: " +
klass.stuff 08 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 'klass=Tester' 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 variable 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 |
-- http://mail.python.org/mailman/listinfo/python-list