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 <[email protected]>:
Č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
[email protected]
http://www.py.cz/mailman/listinfo/python
_______________________________________________
Python mailing list
[email protected]
http://www.py.cz/mailman/listinfo/python