Someone enlightened me

bukzor workitharder at gmail.com
Sun Jul 13 05:03:17 CEST 2008


On Jul 12, 7:08 pm, Marcus Low <mar... at internetnowasp.net> wrote:
> Can someone explain to me, why the behaviour below is different when u
> remark "lister" and unremark "self.lister"?
>
> #--------------------------------------------------------------
> class abc :
>     # remark this later and unremark "self.lister"
>     lister = []
>
>     def __init__ (self, val):
>         #self.lister = []
>         self.lister.append(val)
>
> #--------------------------------------------------------------
> globallist = []
> #--------------------------------------------------------------
> def test () :
>     global l
>     for x in range(10) :
>         o = abc(x)
>         globallist.append(o)
>         o = ""
>
>     for i in globallist :
>         print i.lister
>
> #--------------------------------------------------------------
> test()
> #--------------------------------------------------------------

The way it's written, you're appending to a list associated with the
class itself, which is created only once, then printing out that list
10 times. After you uncomment and comment the specified lines (this is
the usual term, rather than "remark"), you are using a list that is
associated with the actual object, then printing out the 10 different
lists.

Hope that's clear enough.
--Buck



More information about the Python-list mailing list