Re: [python] Třída, která vytvoří instanci jen pokud tam už není instance se stejnými p arametry

2010-07-23 Tema obsahu Kulin
On Jul 22, 7:31 pm, MICHÁLEK Jan Mgr. 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: Th

Re: [python] Třída, která vytvoří instanci jen pokud tam už není instance se stejnými p arametry

2010-07-22 Tema obsahu MICHÁLEK Jan Mgr .
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 p arametry

2010-07-22 Tema obsahu Jirka Vejrazka
Ahoj, mozna to nebude uplne ono, ale dnes dopoledne jsem nahodou narazil na tohle, treba ti to pomuze: http://code.activestate.com/recipes/66531-singleton-we-dont-need-no-stinkin-singleton-the-bo/ Jirka ___ Python mailing list Python@py.cz http://w

Re: [python] Třída, která vytvoří instanci jen pokud tam už není instance se stejnými p arametry

2010-07-22 Tema obsahu MICHÁLEK Jan Mgr .
Všem děkuju za rady, du to vyzkoušet, mám tu dva různý přístupy, ale ani jeden uplně nechápu, nicméně s pomocí Googlu si to snad rozpitvam. Vřelý díky (teda pánové, mam z Vás mindrák, na tohle bych sám asi nepřišel) -Original Message- From: python-boun...@py.cz [mailto:python-boun...@p

Re: [python] Třída, která vytvoří instanci jen pokud tam už není instance se stejnými p arametry

2010-07-22 Tema obsahu Tomáš Drenčák
Aha, tak po dostudovani pojmov to nie je pouzitie metaclass ale len __new__ metody. Tato metoda je zodpovedna za vytvorenie novej instancie objektu. Priklad ale zostava platny 2010/7/22 Tomáš Drenčák : > No ja by som pouzil metaclass (staci definovat metodu __new__), vid priklad: > > xxx = {} > cl

Re: [python] Třída, která vytvoří instanci jen pokud tam už není instance se stejnými p arametry

2010-07-22 Tema obsahu Petr Messner
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:

Re: [python] Třída, která vytvoří instanci jen pokud tam už není instance se stejnými p arametry

2010-07-22 Tema obsahu Tomáš Drenčák
No ja by som pouzil metaclass (staci definovat metodu __new__), vid priklad: xxx = {} class Xxx(object): def __new__(cls, param): global xxx if param not in xxx: xxx[param] = super(Xxx, cls).__new__(cls, param) return xxx[param] def __init__(self, p

Re: [python] Třída, která vytvoří instanci jen pokud tam už není instance se stejnými p arametry

2010-07-22 Tema obsahu MICHÁLEK Jan Mgr .
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 = Zvi

[python] Třída, která vytvoří instanci jen pokud tam už není instance se stejnými p arametry

2010-07-22 Tema obsahu MICHÁLEK Jan Mgr .
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