Zdravim,

promenou arr tridy cSet jsi definoval jako tridni (statickou) promennou. 
Tridu cSet staci definovat takto:
class cSet:
    def __init__(self):
       self.arr = []

Jeste si neodpustim poznamku, ze list je build-in funkce, takze 
nedoporucuji pouzivat jako promennou.

Leo

msk.conf wrote:
> Ahoj.
>
> Ako dlhorocny programator c++ som sa rozhodol trosku zacat s pythonom, ale 
> som 
> znacne konsternovany.
>
> Uvediem priklad:
>
> # definujem classu, obsahuje jedno pole ako member
> class cSet:
>       arr = []
>
> # pole, kde uchovam niekolko cSet-ov
> list = []
>
> # napln pole
> for i in range ( 3 ):
>       cset = cSet()
>       cset.arr.append ( "lama" + str ( i ) )
>       list.append(cset)
>
> # vysledok
> for i in list:
>       print i.arr
>
>
> Vypise to:
> ['lama0', 'lama1', 'lama2']
> ['lama0', 'lama1', 'lama2']
> ['lama0', 'lama1', 'lama2']
>
> Namiesto:
> ['lama0']
> ['lama1']
> ['lama2']
>
> Pride mi to ako dost podivne chovanie, predpokladam, ze to suvisi s inym 
> pristupom k referenciam na objekty, ako v c++ a ze na zaciatku for cyklu sa 
> nevyrvori ( z mne neznameho dovodu ) novy objekt typu cSet a pouzije sa ten z 
> predoslej alokacie.
>
> Mozete mi to niekto vysvetlit?
>
> Dik
>
>   


-- 
----
Leos Pol
SW Engineer
Radiante Corp.

If it can be imagined,
we can implement it

_______________________________________________
Python mailing list
[email protected]
http://www.py.cz/mailman/listinfo/python

Odpovedet emailem