[python] Dekorátor - prosím pěkně o konzultaci a vysvětlení

Martin Stiborský martin.stiborsky na gmail.com
Pondělí Květen 7 23:09:40 CEST 2012


Ahoj,
řekl jsem si, že pro jednu situaci by se mi docela hodil dekorátor, že
by to bylo hezké a vůbec mi to přišlo jako dobrý nápad.
Je to asi poprvé co tenhle syntactic sugar někde vážně používám, takže
jsem s tím trochu bojoval.
Můj dekorátor funguje uvnitř třídy, může si šáhnout na self a bere
argumenty, takže přesně to, co jsem po něm chtěl.

Akorát mi pořád hlava nebere to dvojité zanoření metod (dvojité aby
fungoval ten parametr, došel jsem k tomu víceméně přes pokus-omyl).
Chtěl bych vás poprosit o vysvětlení, co a jak se tam děje, koukám na
to, ale nevím.

Gist je tady https://gist.github.com/2630438, nebo rovnou kód je tady:

class Test(object):
    def decorator(bar=True):
        def magic(foo):
	  def magic2(self):
	      if bar:
	          print "Hey, bar is here"
	      print "start magic"
	      foo(self)
	      self.try_me()
	      print "end magic"
	  return magic2
        return magic

    @decorator(bar=False)
    def bar(self) :
        print "ook!"

    def try_me(self):
        print "Hi there!"

-- 
S pozdravem
Martin Stiborský

Jabber: stibi na njs.netlab.cz


Další informace o konferenci Python