r0g wrote:
...
A class is like a template which combines a complex data type (made from
a combination of other data types) and the methods that operate on that
data type.

You generally don't work with classes directly but you make instances of
them, each instance has it's own internal state and methods, initially
these are the same as the templates but can be changed or overridden
without affecting the state of any other instances you might have.
Take the tutorial and do experiments.
The attribute lookup checks the class _and_ the instance (with the
instance over-riding the class).  Make sure you can explain the output
from this:

    class Demo(object):
        non_template = 43

    d = Demo()
    print d.non_template
    Demo.non_template = 44
    print d.non_template
    d.non_template = 45
    print d.non_template
    Demo.non_template = 46
    print d.non_template

Once you can do that, explain this:
    class Demo2(object):
        holder = []

    e = Demo2()
    print e.holder
    Demo2.holder.append(44)
    print e.holder
    e.holder.append(45)
    print e.holder
    Demo2.holder.append(46)
    print e.holder

    # clue:
    print d.holder is Demo.holder

Is this correct enough for me to avoid the aforementioned bug pile?

Also then, what _is_ an "instance variable" ?

Well, when you use the term variable, I suspect that you think it
represents storage.  OK, it kind of does, but only in the sense
that it can hold a reference to an object.  A more successful
way of thinking is that the attribute name is associated with the
value.  In fact the object typically has a dictionary doing exactly
that, associating attribute names with values.  Both the class and
the instance have such dictionaries, although there are a few "specials"
that don't work that way (setattr knows about checking for the exceptional cases). The "storage" can be removed with the "del"
statement.  Try
    del d.non_template
    print d.non_template
    del e.holder
    print e.holder

--Scott David Daniels
[EMAIL PROTECTED]
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to