[python] Dekorovana funkce

mykhal michal.bozon na gmail.com
Pátek Březen 31 13:31:03 CEST 2017


.. ještě takhle, pokud chceme dekorovat jen pro dekorování, můžeme si
vytvořit jediný dekorátor, který bude brát argument.
tento dekorátor bude funkci udělovat dekorace to "tajného" atributu
třeba _mydecor

def decorate(decoration):
    def do_decor(func):
        if hasattr(func, '_mydecor'):
            func._mydecor.add(decoration)
        else:
            func._mydecor = set([decoration])
        return func
    return do_decor

def isDecorated(func, decoration):
    return (decoration in getattr(func, '_mydecor', set()))

@decorate('red')
@decorate('green')
def orangefunc(): pass

print isDecorated(orangefunc, 'green') # -> True
print isDecorated(orangefunc, 'blue')  # -> False


Další informace o konferenci Python