[python] Dekorovana funkce
Petr Messner
petr.messner na gmail.com
Středa Červen 23 09:30:14 CEST 2010
Pokud se jedná o tvůj vlastní dekorátor, můžeš vracené funkci
nastavit nejaký atribut, jehož přítomnost pak můžeš testovat.
Mimochodem ten dekorátor co uvádíš není nejlepší, protože
přepisuje název a dokumentaci původní funkce. Tím by to také
možná šlo zjistit.
Petr Messner
23.6.2010 v 9:14, Martin Blažík <lachtan na fnet.cz>:
> Čusík,
> nemáte někdo představu, jak zjistit za běhu programu, zda funkce
> či
> metoda byla obalena konkrétním dekorátorem? Mějme tento
> ukázkový kód
>
> def decorator(func):
> def wrap(*args, **kwargs):
> return func(*args, **kwargs)
> return wrap
>
> def test1():
> return 'test1'
>
> @decorator
> def test2():
> return 'test2'
>
> @decorator
> def test3():
> return 'test3'
>
> a já bych rád měl funkci
>
> def isDecorated(function, decor):
> pass
>
> která vrátí True, pokud function vznikla tak, že nějaká jiná
> funkce
> (nezáleží na tom jaká) byla obalena dekorátorem decor. Mohl bych
> napsat
> třeba
>
> lst = [test1, test2, test3]
> for function in lst:
> if isDecorated(function, decorator):
> print function.__name__, 'YES'
> else:
> print function.__name__, 'NO'
>
> Snažil jsem se o tom něco najít na inetu i jsem provedl hromadu
> testování za použítí různých atributu funkce, ale pořád
> nemůžu najít řešení.
>
> Za všechny nápady předem dík
> lachtan
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python
Další informace o konferenci Python