[python] Praca s polom, navedte ma na spravnu cestu
Leos Pol
leos na radiante-corp.com
Čtvrtek Únor 8 11:01:13 CET 2007
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
Další informace o konferenci Python