On Jul 22, 7:31 pm, MICHÁLEK Jan Mgr. <michalek....@uhul.cz> wrote: > To s new mi funguje, to s dekorátorem ne, hlásí mi to blbej syntax při > použití na třídu, mam python 2.5, není to tím?? > > -----Original Message----- > From: python-boun...@py.cz [mailto:python-boun...@py.cz] On Behalf Of Petr > Messner > Sent: Thursday, July 22, 2010 3:17 PM > To: Konference PyCZ > Subject: Re: [python]Třída, která vytvoří instanci jen pokud tam už není > instance se stejnými parametry > > Použil bych dekorátor, nějak takto: > > def unique(cls): > cache = dict() > def factory(*args, **kwargs): > key = args, tuple(sorted(kwargs.items())) > if key not in cache: > cache[key] = cls(*args, **kwargs) > return cache[key] > return factory > > @unique > class Zvire: > def __init__(self, name): > ... > > Petr Messner > > 2010/7/22 MICHÁLEK Jan Mgr. <michalek....@uhul.cz>: > > Ten slovník tam mám, já to umím zachytit, ale neumim udělat to, aby se > > ta instance nevytvořila přes init, šlo by udělat > > > z1= Zvire.pridejZvire('hroch') #a ta metoda bz se podivala do slovniku > > a buď hotovýho hrocha vrátila, nebo udělala fungl novýho > > > ale to já nechci, já to chci dělat > > > z1 = Zvire('hroch') > > > kdybych to narval do nový tridy tak si stejne nepomuzu, udela se tak > > jako tak nova instance. > > ________________________________ > > From: python-boun...@py.cz [mailto:python-boun...@py.cz] On Behalf Of > > Juda Kaleta > > Sent: Thursday, July 22, 2010 2:59 PM > > To: Konference PyCZ > > Subject: Re: [python] Třída, která vytvoří instanci jen pokud tam už > > není instance se stejnými parametry > > > Vhodné by bylo mít na vytváření těchto objektů nějakou továrničku - ta > > by obsahovala slovník s již vytvořeními instancemi ({'pes':..., > > 'hroch':...}). > > Při volání metody k vytvoření nového objektu by se kouklo do slovníku, > > pokud by tam již objekt s tímto klíčem byl, vrátil by se ten, pokud > > ne, vytvořil by se nový objekt. > > > Juda Kaleta > > > E-mail: juda.kal...@gmail.com > > Jabber: ye...@jabber.cz > > > Dne 22.7.2010 14:50, MICHÁLEK Jan Mgr. napsal(a): > > > Otázka: > > je možné napsat třídu tak, aby vytvořila instanci, jen pokud ještě > > instance se stejnými parametry ještě neexistuje. > > > Např: > > mám třídu zvíře a chtěl bych, aby se chovala následujícím způsobem > >>>> z1 = zvire('hroch') > >>>> z1 > > <__main__.zvire instance at 0x017C1EE0> > > >>>> z2 = zvire('pes') > >>>> z2 > > <__main__.zvire instance at 0x017C1760> > > >>>> z3 = zvire('hroch') > >>>> z3 > > <__main__.zvire instance at 0x017C1EE0> > > > Jde to nějak rozumně (a pochopitelně) udělat?? > > > Je. > > > Mgr Jan Michálek > _______________________________________________ > Python mailing list > pyt...@py.czhttp://www.py.cz/mailman/listinfo/python > > __________ Informace od ESET NOD32 Antivirus, verze databaze 5300 (20100722) > __________ > > Tuto zpravu proveril ESET NOD32 Antivirus. > > http://www.eset.cz > > __________ Informace od ESET NOD32 Antivirus, verze databaze 5301 (20100722) > __________ > > Tuto zpravu proveril ESET NOD32 Antivirus. > > http://www.eset.cz
http://www.amazon.com/dp/B003NX7N38 _______________________________________________ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python