[python] Problem s metodami
Petr Mach
gsl na seznam.cz
Pátek Únor 17 14:55:09 CET 2006
> Ve vasem prikladu se naalokuje pamet pro instancemethod a vzapeti
> se uvolni, protoze na objekt neni zadna reference. Vysledkem vyrazu
> `id(c.m)' je integer s tim, ze v prubehu vypoctu se docasne vytvoril
> objekt typu instancemethod, ale jeste pred dokoncenim vyhodnoceni vyrazu
> se objekt dealokoval. Tato pamet se znovu pouzije pro novou instanci
> v dalsim vyrazu `id(c.m)'. Pokud ovsem jednu instanci ulozime, nove
> volani alokuje jiny usek pameti a dostaneme jine id.
Já tomu rozumím, jen píšu, že je potřeba si na to dát pozor. Protože se
občas uvádí, že "a is b" je to samé jako "id(a) == id(b)", a tento
příklad ukazuje, že tomu tak nemusí být. Lze si to snadno ověřit takto:
>>> a=c.m
>>> b=c.m
>>> id(a), id(b), id(c.m), id(c.m)
(-1208131876, -1208247924, -1208570148, -1208570148)
Další informace o konferenci Python