我正在寻找Python类装饰器的实用和非综合用例。到目前为止,对我而言唯一有意义的情况是在发布者-订阅者系统中注册一个类,例如插件或事件,例如:
@register
class MyPlugin(Plugin):
pass
要么
@recieves_notifications
class Console:
def print(self, text):
...
我一直在考虑的任何其他明智的情况都可以建立在继承,元类或修饰方法之上。您能否分享使用类装饰器的任何好(或坏!)示例?
谢谢!
对于初学者来说,装饰器在概念上比元类简单得多。编写装饰器要比元类简单得多,并且避免了可能不必弄清楚如何组合多个元类而不破坏任何内容。
—
阿蒙
@amon当经验丰富的开发人员使用元类时,通常意味着已经彻底考虑了其他选择,而元类到目前为止是解决问题的最佳方法。而且,显式比隐式好 -这可能就是为什么(例如)我们拥有
—
Zaur Nasibov '16
ABCMeta
而非@abstractclass
类装饰器的原因。
我是一名Python程序员,老实说我没有必要。仅仅因为语言功能存在并不意味着您必须甚至应该使用它。设计师提出了各种疯狂的功能,这些功能后来看来是不必要的,甚至是有害的。实际上,您在问题中提到了其他两个类似的功能:)
—
gardenhead
不是没有我不能没有的东西,但是我发现有用的是使用类装饰器来记录该类所有方法的所有输入和输出。
—
bgusach '16