[python] =?utf-8?q?T=C5=99=C3=ADda?=, která vytvoří instanci jen pokud tam už není instance se stejnými parametry
Hynek Fabian
hynek.fabian na firma.seznam.cz
Čtvrtek Červenec 22 15:19:45 CEST 2010
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.jan na 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
Další informace o konferenci Python