[python] Problem s metodami

Petr Mach gsl na seznam.cz
Pátek Únor 17 14:03:41 CET 2006


>     >>> type(cls.__dict__['method'])
>     <type 'function'>
>     >>> type(cls.method)
>     <type 'instancemethod'>
> 
> Vyraz cls.method vrati objekt typu instancemethod, v kterem je
> zapouzdrena prislusna funkce. Jelikoz se zapouzdreni nikde nekesuje,
> je pri kazdem vyskytu vyrazu `cls.method' vytvoren novy objekt typu
> instancemethod. Proto pro porovnani pres operator `is' dostavame False.

Je ale poněkud zvláštní a je potřeba si dát pozor na to, že ten "novy 
objekt typu instancemethod" má pořád stejné id:

 >>> id(c.m)
-1208131876
 >>> id(c.m)
-1208131876
 >>> id(c.m)
-1208131876

 >>> id(c.m) == id(c.m), c.m is c.m
(True, False)




Další informace o konferenci Python