[python] Dekorovana funkce
Martin Blažík
lachtan na fnet.cz
Středa Červen 23 09:14:21 CEST 2010
Č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
Další informace o konferenci Python