如何从Python中的函数中剥离装饰器
发布时间:2020-12-20 10:32:12 所属栏目:Python 来源:网络整理
导读:假设我有以下内容: def with_connection(f): def decorated(*args,**kwargs): f(get_connection(...),*args,**kwargs) return decorated@with_connectiondef spam(connection): # Do something 我想测试垃圾邮件功能,而不必经历设置连接的麻烦(或者装饰者正
假设我有以下内容:
def with_connection(f): def decorated(*args,**kwargs): f(get_connection(...),*args,**kwargs) return decorated @with_connection def spam(connection): # Do something 我想测试垃圾邮件功能,而不必经历设置连接的麻烦(或者装饰者正在做的任何事情). 鉴于垃圾邮件,如何从中删除装饰器并获得底层的“未修饰”功能? 解决方法
在一般情况下,你不能,因为
@with_connection def spam(connection): # Do something 相当于 def spam(connection): # Do something spam = with_connection(spam) 这意味着“原始”垃圾邮件可能甚至不再存在.一个(不太漂亮)黑客将是这样的: def with_connection(f): def decorated(*args,**kwargs) decorated._original = f return decorated @with_connection def spam(connection): # Do something spam._original(testcon) # calls the undecorated function (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |