Re: Trying to understand a little python
On Tue, 07 Dec 2004 19:07:42 +1000, Nick Coghlan <[EMAIL PROTECTED]> wrote: McCarty, Greg wrote: 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. You may find the following a useful overview of how class & instance attributes work: http://mail.python.org/pipermail/python-list/2004-November/251782.html (Keep in mind that I'm only considering 'normal' attributes in that message - it covers the behaviour in most cases, but not quite all. When things stop behaving as you expect based on this description, the relevant word is almost certainly "descriptors") Cheers, Nick. www.norvig.com has some insightfull comparisons of Java, Lisp and Python -- Using M2, Opera's revolutionary e-mail client: http://www.opera.com/m2/ -- http://mail.python.org/mailman/listinfo/python-list
Re: Trying to understand a little python
McCarty, Greg wrote: 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. You may find the following a useful overview of how class & instance attributes work: http://mail.python.org/pipermail/python-list/2004-November/251782.html (Keep in mind that I'm only considering 'normal' attributes in that message - it covers the behaviour in most cases, but not quite all. When things stop behaving as you expect based on this description, the relevant word is almost certainly "descriptors") Cheers, Nick. -- Nick Coghlan | [EMAIL PROTECTED] | Brisbane, Australia --- http://boredomandlaziness.skystorm.net -- http://mail.python.org/mailman/listinfo/python-list
Re: Trying to understand a little python
McCarty, Greg wrote: 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? klass=Tester sets the default value of the variable klass to the *class* Tester. This isn't creating an instance of Tester. Only pointing klass to the class itself. Line 10 - Seems that the syntax 'Tester()' actually causes the __init__ method to fire. Is this the only case? Mostly. You can use getattr if you like. And probably eval or exec. But I would try to stick with the Tester() syntax. Line 12 - At this point, I was thinking of Tester.stuff as a static variable of the Tester class. When you set a.stuff to "changed", you are setting an instance attribute on "a" to "changed". "b" is still pointing to the "static variable" on Tester. Look at this: In [12]: a = Tester() I'm initializing Tester In [13]: b = Tester() I'm initializing Tester In [14]: Tester.stuff Out[14]: 'setting stuff' In [15]: Tester.stuff = "FOOBAR" In [16]: a.stuff Out[16]: 'FOOBAR' In [17]: b.stuff Out[17]: 'FOOBAR' In [18]: a.stuff = "A.STUFF" In [19]: a.stuff Out[19]: 'A.STUFF' In [20]: b.stuff Out[20]: 'FOOBAR' I re-set Tester.stuff to "FOOBAR". "a" and "b" attributes "stuff" were pointing to that for a second. Then I pointed the attribute "stuff" on "a" to "FOOBAR". 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 HTH. Jeremy -- http://mail.python.org/mailman/listinfo/python-list