On Jul 12, 10:23 am, Jeremy Lynch <[EMAIL PROTECTED]> wrote: > Hello, > > Learning python from a c++ background. Very confused about this: > > ============ > class jeremy: > list=[] > def additem(self): > self.list.append("hi") > return > > temp = jeremy() > temp.additem() > temp.additem() > print temp.list > > temp2 = jeremy() > print temp2.list > ============== > The output gives: > ['hi','hi'] > ['hi','hi'] > > Why does adding items to one instance produce items in a separate > instance? Doesn't each instance of jeremy have its' own "list"? > > Many thanks for clearing up this newbie confusion. > > Jeremy.
The reason it works like that is that your variable "list" isn't an instance variable per se. Instead, you should have it like this: <code> class jeremy: def __init__(self): self.lst=[] def additem(self): self.lst.append("hi") return </code> Now it works as expected. It's some kind of scope issue, but I can't explain it adequately. Mike -- http://mail.python.org/mailman/listinfo/python-list