> 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 este pri jednej veci to zblbne... ono takto zistim nazov skompilovaneho bloku kodu... nie nazov fcie...
~~~~~~~~~~~~~~~~~~~~~ CODE ~~~~~~~~~~~~~~~~~~~~~ In [1]: import sys In [2]: import types In [3]: class a: ...: def aa(self): ...: print "ja jsem metoda:", sys._getframe(0).f_code.co_name ...: bb = aa ...: cc = types.FunctionType(aa.func_code, aa.func_globals, 'cc') ...: In [4]: a.aa.__name__ Out[4]: 'aa' In [5]: a.bb.__name__ # bb je len referencia na aa Out[5]: 'aa' In [6]: a.cc.__name__ # tu je spravne 'cc' Out[6]: 'cc' In [7]: a().aa() ja jsem metoda: aa In [8]: a().bb() ja jsem metoda: aa In [9]: a().cc() # a hups tu je 'aa' ja jsem metoda: aa ~~~~~~~~~~~~~~~~~~~~~ /CODE ~~~~~~~~~~~~~~~~~~~~~ Neviem kto by nieco taketo pouzival, ale je mozne ze to vyuzivaju niektore frameworky. Da sa nejako dostat ku instancemethod objektu, nemiesto code objektu? _______________________________________________ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python