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)

_______________________________________________
Python mailing list
[email protected]
http://www.py.cz/mailman/listinfo/python

Odpovedet emailem