[python] Dekorátor a přístup do jmenného prostoru třídy

Jirka Vejrazka jirka.vejrazka na gmail.com
Středa Červenec 23 20:31:14 CEST 2008


>>> Potřeboval bych, aby dekorátor měl přístup k self.bar, aby mohl číst
>>> co je zrovna v té proměnné, na aktuální funkčnost nekoukejte, jenom
>>> jsem chtěl nastínit jak to vypadá. Nevím jak to napsat tak, aby se ten
>>> dekorátor k tomu dostal :( Potřeboval bych totiž uvnitř dekorátoru s
>>> onou self.bar pracovat ..

Nejak takhle?

def dekorator():
 def decorate(fce):
   def wrapper(*args, **kwargs):
     instance = args[0]
     # moznost 1: print instance.__dict__['bar']
     # moznost 2: print getattr(instance, 'bar')
   return wrapper
 return decorate

class Foo:
 def __init__(self):
   self.bar = "promenna"

 @dekorator()
 def metoda(self):
   print "ja jsem metoda"

app = Foo()
app.metoda()

  Jirka


Další informace o konferenci Python