python – 装饰器和类
发布时间:2020-12-20 11:10:53 所属栏目:Python 来源:网络整理
导读:有没有办法在嵌套好的类结构中编写装饰器?例如,没有类,这可以正常工作: def wrap1(func): def loc(*args,**kwargs): print 1 return func(*args,**kwargs) return locdef wrap2(func): def loc(*args,**kwargs): print 2 return func(*args,**kwargs) retu
有没有办法在嵌套好的类结构中编写装饰器?例如,没有类,这可以正常工作:
def wrap1(func): def loc(*args,**kwargs): print 1 return func(*args,**kwargs) return loc def wrap2(func): def loc(*args,**kwargs): print 2 return func(*args,**kwargs) return loc def wrap3(func): def loc(*args,**kwargs): print 3 return func(*args,**kwargs) return loc def merger(func): return wrap1(wrap2(wrap3(func))) @merger def merged(): print "merged" @wrap1 @wrap2 @wrap3 def individually_wrapped(): print "individually wrapped" merged() individually_wrapped() 输出是: 1 2 3 merged 1 2 3 individually wrapped 这就是我想要的.但现在让我们说我想将merged和individual_wrapd作为静态或类方法.只要装饰器不在类名称空间之外,这也可以工作.有没有什么好方法将装饰器放在命名空间中?我宁愿不列举所有不起作用的方法,但主要问题是如果merger是一个方法,它就无法访问wrapX方法.也许这是一个想要做的蠢事,但有没有人得到这样的东西工作,所有装饰器和装饰方法在同一个类? 解决方法
“有没有什么好方法可以将装饰器放在命名空间中?”
这没有令人信服的理由.你有模块文件.这些是一个类和一些装饰器的整洁容器. 你不需要装饰器作为类的方法 – 你可以从另一个方法中调用一个方法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |