python元编程详解(2)

如何对装饰器进行解包?

上一章,我们对函数进行装饰,但是有时候我们又想撤销这个函数的修饰,直接访问那个没有被修饰的函数,这时候我们就可以用到wrapped函数进行函数装饰器的解包,下面请看代码演示:

@somedecorator
def add(x, y):
    return x + y

orig_add = add.__wrapped__
otig_add(3, 4)

这时候我们的现有函数orig_add就会绕过@somedecorator函数的装饰器直接访问函数add。
一般这个解包的功能用在调试和自省(反射)中,方便开发人员进行开发。

你可能感兴趣的:(python元编程详解(2))