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

msk.conf msk.conf na seznam.cz
Čtvrtek Únor 8 10:51:34 CET 2007


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


Další informace o konferenci Python