【补充】装饰类的装饰器类作为装饰器

【一】装饰类的装饰器:

  • 装饰类的装饰器是指一个类,它接收一个类作为参数,并返回一个新的类。

  • 这个新的类通常会继承自被装饰的类,并对其进行一些拓展或修改。

  • 示例代码如下:

    def decorator(cls): class NewClass(cls): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.new_attribute = 'Added attribute' def new_method(self): print("New method") return NewClass @decorator class OriginalClass: def __init__(self): self.original_attribute = 'Original attribute' def original_method(self): print("Original method") obj = OriginalClass() obj.original_method() # Output: "Original method" obj.new_method() # Output: "New method" print(obj.original_attribute) # Output: "Original attribute" print(obj.new_attribute) # Output: "Added attribute"
    • 在上述示例中,decorator是装饰类的装饰器。
    • 它接收一个类cls作为参数,并创建一个继承自cls的新类NewClass
    • NewClass中,我们添加了一个新的属性new_attribute以及一个新的方法new_method
    • 通过将装饰器@decorator应用于OriginalClass,我们创建了一个经过装饰的新类OriginalClass,该类继承自原始类,并拥有额外的属性和方法。

【二】类作为装饰器:

  • 类作为装饰器是指一个类,它实现了__call__方法,使得该类的对象可以像函数一样被调用,并用于装饰其他函数或类。

  • 这种装饰器通常会在被装饰对象的前后添加额外的行为或对其进行修改。

  • 示例代码如下:

    class Decorator: def __init__(self, func): self.func = func def __call__(self, *args, **kwargs): print("Before function execution") result = self.func(*args, **kwargs) print("After function execution") return result @Decorator def decorated_function(): print("Decorated function") decorated_function() # Output: "Before function execution", "Decorated function", "After function execution"
    • 在上述示例中,Decorator类实现了__call__方法,使得该类的对象可以像普通函数一样被调用。
    • 通过将装饰器@Decorator应用于函数decorated_function,我们将Decorator类的对象作为装饰器来装饰这个函数。
    • 在函数执行之前和之后,装饰器会输出一些额外的内容,从而拓展了函数的功能。

__EOF__

本文作者Chimengmeng
本文链接https://www.cnblogs.com/dream-ze/p/17659497.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   Chimengmeng  阅读(44)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示