[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