二十三种设计模式:装饰器模式篇(Python)

二十三种设计模式:装饰器模式篇Python


(1)介绍
装饰器模式(Decorator),一种常用设计模式,属于结构型模式。
保持类的完整进行情况下进行类的包装
(2)解决问题
我们经常继承类来引入其他特征,由于扩展功能过多,子类会过于膨胀
(3)使用场景
扩展功能过多或不该变原代码的情况
(4)核心
不改变对象,添加新功能
1 继承(静态,一开始定死了,不可改变)
2 关联----即装饰器模式(动态,添加方法)
python — @

(5)代码
python是友好的,它提供了装饰器方法,我们经常见到内置装饰器
@staticmethod,@classmethod,还有一般我们用函数,闭包来形成装饰器,其实类也可以,装饰器要求:可调用的对象都可以使用。
用类的__call__方法

import time
import functools

class Delay:
    def __init__(self,time1,func):
        self.time1 = time1
        self.func = func
    def __call__(self, *args, **kwargs):
        print('等{}秒'.format(self.time1))
        time.sleep(self.time1)
        return self.func(*args, **kwargs)
    def no_wait(self,*args, **kwargs):
        print('不用等待')
        return self.func(*args, **kwargs)

def delay(time1:int):
    '''装饰器:推迟某函数执行,另一中方法no_wait 不用等待'''
    return functools.partial(Delay,time1)

'''为fun1函数增加时间等待功能'''
@delay(5)
def fun1():
    print('你好')

fun1()
fun1.no_wait()
(个人练习)



发布了9 篇原创文章 · 获赞 0 · 访问量 417

猜你喜欢

转载自blog.csdn.net/weixin_41901939/article/details/90703337