Lists in classes
Jennifer Thacher
jthacher at unm.edu
Thu Jul 12 11:47:08 EDT 2007
Jeremy Lynch 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.
>
In this code, "list" (bad name) is a class attribute and all therefor in
all instances, the "list" attribute is reference to the class attribute
unless otherwise assigned, as in __init__.
For instance, try:
temp = jeremy()
temp.additem()
temp.additem()
print temp.list
temp2 = jeremy()
temp2.list = [1,2,3]
print temp.list, temp2.list, jeremy.list
And see which ones look the same (same reference) or look different.
James
More information about the Python-list
mailing list