Radek Kanovsky > mtip wrote: > > potreboval bych zjistit nazev metody uvnitr tridy. > > [...] > import sys > class a: > def aa(self): > print "ja jsem metoda:", sys._getframe(0).f_code.co_name > > bb = aa > x=a() > x.aa() > x.bb() > > Neni to ale stoprocentne spolehlive, jak lze videt pri volani x.bb().
Aha, frame lze získat i takhle,... Paráda. Takže navrhuji kombinaci: import sys def MojeJmeno(): '''Vraci jmeno volajiciho.''' return sys._getframe(1).f_code.co_name class a: def aa(self): print 'Jsem metoda', MojeJmeno() x = a() x.aa() S tím x.bb() je to asi pochopitelné a nic se s tím nedá dělat. Stejně tak bych mohl definovat: bb = x.aa bb() a taky to ukáže, že se volá metoda aa. Ta informace je tam uložená z doby kompilace. bb je reference na objekt metody a ta patří k třídě. Nesmí záležet na tom, jakým způsobem se k němu dostanu. pepr _______________________________________________ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python