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
