Lists in classes
jasondrew72 at gmail.com
Thu Jul 12 19:22:36 CEST 2007
Thanks for clearing up the other incorrect answers! In true Python
fashion, I would also remind everyone of the *documentation* - in
particular the Python tutorial. These are very elementary mistakes to
be making - even worse as part of attempted answers.
The Python tutorial is at http://docs.python.org/tut/tut.html
In particular see the section on classes: http://docs.python.org/tut/node11.html
Note however that the tutorial doesn't show the current best practice
of subclassing your classes from "object", i.e.
On Jul 12, 11:51 am, Wildemar Wildenburger <wilde... at freakmail.de>
> Bart Ogryczak wrote:
> > On 12 jul, 17:23, Jeremy Lynch <jeremy.ly... at gmail.com> wrote:
> >> Hello,
> >> Learning python from a c++ background. Very confused about this:
> >> ============
> >> class jeremy:
> >> list=
> > You've defined list (very bad choice of a name, BTW), as a class
> > variable. To declare is as instance variable you have to prepend it
> > with "self."
> 'self' is *not* a reserved ord in python, it doesn't do anything. So
> just popping 'self' in front of something doesn't bind it to an instance.
> Here is how it works:
> class Jeremy(object): # you better inherit from 'object' at all times
> classlist =  # class variable
> def __init__(self): # "constructor"
> self.instancelist =  # instance variable
> def add_item(self, item):
> 'self' is the customary name for the first argument of any instance
> method, which is always implicitly passed when you call it. I think it
> translates to C++'s 'this' keyword, but I may be wrong. Simply put: The
> first argument in an instance-method definition (be it called 'self' or
> otherwise) refers to the current instance.
> Note however that you don't explicitly pass the instance to the method,
> that is done automatically:
> j = Jeremy() # Jeremy.__init__ is called at this moment, btw
> j.add_item("hi") # See? 'item' is the first arg you actually pass
> I found this a bit confusing at first, too, but it's actually very
> clean, I think.
More information about the Python-list