不同的装饰器用于相同的功能

时间:2014-07-15 05:43:03

标签: python decorator

我有3个装饰器,并希望将它们分别应用于一个函数,以创建3个不同版本的函数。例如:

@decorator_1
def foo1():
  blahblah

@decorator_2
@decorator
def foo2():
  blahblah

@decorator_3
def foo3()
  blahblah

foo1foo2foo3的内容完全相同。问题是我必须写出3次这个功能。当然,我可以将blahblah放入另一个函数spam并在这三个函数中调用它。但我仍然需要创建3个单独的函数并调用spam 3次。有没有更好的方法来进一步减少这种冗余?

1 个答案:

答案 0 :(得分:5)

def foo():
  blahblah

foo1 = decorator_1(foo)
foo2 = decorator_2(decorator(foo))
foo3 = decorator_3(foo)