[python] Dekorovana funkce
mykhal
michal.bozon na gmail.com
Středa Červen 23 12:18:56 CEST 2010
v prvnim priblizeni by mohlo jit pouzit neco takoveho:
def decorator(func):
def wrap(*args, **kwargs):
return func(*args, **kwargs)
return wrap
def isDecorated(func):
import types
clo = getattr(func, 'func_closure', None)
if not clo:
clo = getattr(func, '__closure__', None) # py3k
return bool(clo and isinstance(clo[0].cell_contents,
types.FunctionType))
def f1(): pass
@decorator
def f2(): pass
print(isDecorated(f1))
print(isDecorated(f2))
On Jun 23, 9:14 am, Martin Blažík <lach... na fnet.cz> wrote:
> 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