Сущствуют именнованные декораторы. И когда они используются вот так, то об этом не задумываешься:
@decor(descr = "Line")
def hello():
print "Hello"
И даже в этом случае:
@decor(descr = "Line")
@seconddecor
def hello():
print "Hello"
Так вот чтобы их объединить, нужен декоратор, который принимает кроме функции еще параметр descr. Это нужно организовать так:
def bothdecor(descr = ''):
def new(f):
g = decor(descr = descr)(seconddecor(f))
return g
return new
То есть декоратор decor() — функция, которая принимает параметр descr=descr и возвращает функцию, которая как раз и есть декоратор.
Теперь эти два декоратора можно вместе вызовывать как
@bothdecor(descr = 'Newline')
def func(...):
...
Комментариев нет:
Отправить комментарий