Je to mozne udelat pretizenim metody __new__() Jen pozor na to, ze kdyz se vrati existujici instance z cache, bude zavolana jeji metoda __init__() jako by byla nova
class Zvire(object): _cache = {} def __new__(cls, name, *args, **kargs): if name not in cls._cache: cls._cache[name] = object.__new__(Zvire) return cls._cache[name] MICHÁLEK Jan Mgr. (čtvrtek 22 Červenec 2010 14:50:50): > 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 > > oddělení GIS > > útvar ISaT > > ÚHÚL Brandýs nad Labem > > tel.: +420 322 319 886 > > email: mailto:michalek....@uhul.cz > > url: http://www.uhul.cz/ > > > > > __________ Informace od ESET NOD32 Antivirus, verze databaze 5300 > (20100722) __________ > > Tuto zpravu proveril ESET NOD32 Antivirus. > > http://www.eset.cz _______________________________________________ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python