problem je v tom, ze definujete arr jako tridni promennou, kterou si instance
sdileji. Pokud chcete clenskou promennou je treba ji vytvorit takto:
class cSet:
def __init__(self):
self.arr = []
Zdravi
Jiri Vit
---------- Original Message -----------
From: "msk.conf" <[EMAIL PROTECTED]>
To: [email protected]
Sent: Thu, 8 Feb 2007 10:51:34 +0100
Subject: [python] Praca s polom, navedte ma na spravnu cestu
> 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
>
> --
> Dusan
> _______________________________________________
> Python mailing list
> [email protected]
> http://www.py.cz/mailman/listinfo/python
------- End of Original Message -------
_______________________________________________
Python mailing list
[email protected]
http://www.py.cz/mailman/listinfo/python