[python] dekorovany dekorator

Hynek Fabian hynek.fabian na firma.seznam.cz
Pátek Únor 25 19:32:47 CET 2011


Napadla mě lehce šílená myšlenka v souvislosti s nedávnou debatou o 
dekorátorech – nešlo by zařídit aby argumenty dekorátoru byly tam,
kde je všichni z nějakého záhadného důvodu očekáváme?

--- cut here ---

def plaindecorator(deco):
    def argeater(*args, **kargs):
        def funceater(fce):
            return deco(fce, *args, **kargs)
        return funceater
    return argeater


# zkouska
@plaindecorator
def spam(fce, pwd):
    def wrapper(*args, **kargs):
        if pwd == raw_input("Password: "):
            return fce(*args, **kargs)
        else:
            raise RuntimeError("Piss off")
    return wrapper

@spam("it")
def ham(x):
    print x

--- cut here ---

Dekorátor dekorátoru. Teď už mě v pythonu nepřekvapí nic. 


Další informace o konferenci Python