首页 > 其他分享 >【补充】装饰类的装饰器类作为装饰器

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

时间:2023-08-26 21:44:44浏览次数:35  
标签:__ 器类 补充 attribute self method function 装饰

【一】装饰类的装饰器:

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

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

  • 示例代码如下:

    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类的对象作为装饰器来装饰这个函数。
    • 在函数执行之前和之后,装饰器会输出一些额外的内容,从而拓展了函数的功能。

标签:__,器类,补充,attribute,self,method,function,装饰
From: https://www.cnblogs.com/dream-ze/p/17659497.html

相关文章

  • 上海KTV酒店装饰电镀卡通不锈钢积木熊雕塑厂家报价
    上海KTV酒店装饰电镀卡通不锈钢积木熊雕塑厂家报价Bearbrick卡通不锈钢积木熊雕塑是一个独特的塑料玩具,它的形象是一个可爱的、独特的拟人化熊公仔,带有大肚皮。卡通不锈钢积木熊雕塑虽然是一个简单的塑料玩具,但世界上一些最大的时装公司和设计师已经采用它来展示他们最新的设计和......
  • WPF-利用装饰器实现空间的自由拖动
    在项目中经常会遇到类似如下要求的需求,创建允许自由拖动的控件,这样的需求可以使用WPF的装饰器Adorner来实现。 一、什么是装饰器?装饰器是一种特殊类型的FrameworkElement,装饰器始终呈现在被装饰元素的顶部,用于向用户提供可视化提示。装饰器可以在不改变原有控件结构的基......
  • 哈哈哈哈补充快捷键截图
        ......
  • 福建学校草坪装饰镜面不锈钢风车雕塑厂家报价
    福建学校草坪装饰镜面不锈钢风车雕塑厂家报价不锈钢风车雕塑不仅是风景,更是精神象征和图腾。正如欧洲流传的一句话:上帝创造了人,荷兰风车创造了陆地。风车象征着荷兰的民族文化,人们对天空的热爱,童话般的幸福。风车在西班牙随处可见。风车虽然失去了原有的功效,但却象征着西班牙农业的......
  • 装饰电镀添加剂行业市场调研及发展趋势报告2023-2029
    2023-2029全球装饰电镀添加剂行业调研及趋势分析报告2022年全球装饰电镀添加剂市场规模约亿元,2018-2022年年复合增长率CAGR约为%,预计未来将持续保持平稳增长的态势,到2029年市场规模将接近亿元,未来六年CAGR为%。从核心市场看,中国装饰电镀添加剂市场占据全球约%的市场份额,为全......
  • SQLalchemy补充
    目录七更多查询方式八连表查询九原生sql(django-orm如何执行原生sql)9.1sqlalchemy执行原生sql9.2django执行原生sql十flask-sqlalchemy使用10.1sqlalchemy自己操作src/init.pysrc/models.pysrc/session_sql.pysrc/settings.pysrc/views.pymanage.py10.2使用flask-sqlalch......
  • python @property装饰器实现原理
    @property装饰器可以使一个对象的方法变成属性访问,比较方便,那么它是如何实现的呢?下面是一个自己动手实现的例子:classMyProperty:def__init__(self,fget=None,fset=None):self.fget=fgetself.fset=fsetdef__get__(self,instance,o......
  • 【补充】反爬措施
    【一】后端防爬虫后端防爬虫是指通过一系列措施和技术手段来保护网站或应用程序不受到未经授权的自动化访问(爬取)的影响。【二】频率限制(IP、用户)使用限流算法,例如令牌桶算法或漏桶算法,在单位时间内限制同一IP地址或用户的请求次数。为每个请求标识唯一的身份信息,如IP地址或用......
  • python增加一个循环运行的装饰器
    在平时编程时,经常会遇到循环运行一个函数的情况,我们可以编写一个装饰器来简化这个过程,实现代码如下:defLoopRun(duration:float=60,interval:float=1,remainder:float=3)->callable:'''支持长期运行的装饰器函数duration:持续时长,单位秒interval:......
  • 【pandas小技巧】--category类型补充
    category类型在pandas基础系列中有一篇介绍数据类型的文章中已经介绍过。category类型并不是python中的类型,是pandas特有的类型。category类型的优势那篇文章已经介绍过,当时只是介绍了如何将某个列的数据转换成category类型,以及转换之后给程序性能上带来的好处。本篇将补充介绍......