[python] Praca s polom, navedte ma na spravnu cestu

Jiri Vit jirivit na jirivit.com
Čtvrtek Únor 8 11:16:26 CET 2007


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" <msk.conf na seznam.cz>
To: python na py.cz
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
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python
------- End of Original Message -------



Další informace o konferenci Python