[python] nazev metody
Petr Prikryl
PrikrylP na skil.cz
Čtvrtek Leden 11 13:41:12 CET 2007
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
Další informace o konferenci Python