[python] nazev metody
    Jan Janech 
    devel na atlas.sk
       
    Čtvrtek Leden 11 14:04:39 CET 2007
    
    
  
> 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?
    
    
Další informace o konferenci Python