Декораторы классов и декораторы функций [дубликат]

На этот вопрос уже есть ответ здесь:

В python есть два способа объявления декораторов:

На основе классов

class mydecorator(object):
    def __init__(self, f):
        self.f = f

    def __call__(self, *k, **kw):
        # before f actions
        self.f(*k, **kw)
        # after f actions

На основе функций

def mydecorator(f):
    def decorator(*k, **kw):
        # before f actions
        f(*k, **kw)
        # after f actions

    return decorator          

Есть ли разница между этими объявлениями? В каких случаях следует использовать каждый из них?

28
задан martineau 13 July 2011 в 11:00
поделиться