[python] diskuze

Jakub Coufal jakub na gelion.cz
Čtvrtek Červen 3 07:34:28 CEST 2004


Pratele.
Vcera jsem psal SAXParser v Pythonu, vesele si pobrukoval
ale pak mi spadla celist. Narazil jsem na neco co mi vyrazilo
dech.

Zjednoduseny priklad:
----------------------------------------------------------------------------------------------
jakub na gelion:~$ python2.1
Python 2.1.3 (#1, Apr 20 2002, 10:14:34)
[GCC 2.95.4 20011002 (Debian prerelease)] on linux2
Type "copyright", "credits" or "license" for more information.
>>> class maso:
...     nazev = ""
...     seznam = []
...
>>> a = maso()
>>> b = maso()
>>>
>>> a.nazev = "kotleta"
>>> a.seznam.append("varena")
>>>
>>> b.nazev = "koleno"
>>> b.seznam.append("uzene")
>>>
>>> print a.nazev
kotleta
>>> print a.seznam
['varena', 'uzene']
>>> print b.nazev
koleno
>>> print b.seznam
['varena', 'uzene']
---------------------------------------------------------------------------------------------------
U objektu a i b seznam zaujima stejnou adresu v pameti. Nazev ne.
Koukam na to jako tele a nevim jak to obejit. Jsou moznosti:

a) Jsem opravdu tele a neumim pouzivat objekty v Pythonu
b) Je to spravne chovani, ktere mi ale naprosto nevyhovuje
c) Je to chyba Pythonu jako hrom

Doufam ze za a) je spravne, jinak bych asi python opustil
jako spatne navrzeny objektovy jazyk.

verze 2.2 a 2.3 to delaji take.

S pozdravem Jakub Coufal




Další informace o konferenci Python