error in tutorial for 3.0, section 9.3.3

Benjamin Kaplan benjamin.kaplan at case.edu
Sat May 23 10:24:53 EDT 2009


On Sat, May 23, 2009 at 9:13 AM, Vincent Davis <vincent at vincentdavis.net>wrote:

> let me add that I see that this could be right if x.counter = 1 and
> counter need not have anything to do with MyClass but this could be more
> clear.
> Thanks
> Vincent Davis
> 720-301-3003
>
>
> On Sat, May 23, 2009 at 7:08 AM, Vincent Davis <vincent at vincentdavis.net>wrote:
>
>> Section 9.3.3 says that given,
>> class MyClass:
>>     """A simple example class"""
>>     i = 12345
>>     def f(self):
>>         return 'hello world'
>>
>> and x = MyClass()
>> then this
>>
>> x.counter = 1
>> while x.counter < 10:
>>     x.counter = x.counter * 2
>> print(x.counter)
>> del x.counter
>>
>> will print 16
>>
>> link,
>> http://docs.python.org/3.0/tutorial/classes.html#a-first-look-at-classes
>>
>> I am reading this section so to learn about classes but if this is right I
>> think I need to start over.
>>
>>
The code given is correct, though the description in the tutorial could be
clearer. Basically, a class in Python is represented by a dict with strings
mapping to other stuff. Internally, x.counter = 1 is just a shortcut for
x.__dict__['counter'] = 1. This appears in the code as dynamically adding
the variable "counter" to the instance of MyClass. Unlike in static
languages, an instance variable in python doesn't need to be declared inside
the class for you to use it. It also doesn't need to appear in every
instance of the class.

The last line in the code (del x.counter) removes the "counter" key from x
so that the instance variable disappears. That's how the code works "without
leaving a trace".




>
>> Thanks
>> Vincent Davis
>> 720-301-3003
>>
>
>
> --
> http://mail.python.org/mailman/listinfo/python-list
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20090523/c1529daa/attachment-0001.html>


More information about the Python-list mailing list