[Python设计模式] 03 - 装饰模式

设计模式的目的是让代码易维护、易扩展,不能为了模式而模式,因此一个简单的工具脚本是不需要用到任何模式的。

装饰模式:动态的给对象添加额外的功能。
Python内置了很多对装饰器的支持,因此在Python中使用装饰模式是非常容易的,下面是一个典型的例子,给函数增加日志功能:

import functools 
def log_wrapper(fun):
    @functools.wraps(fun)
    def wrapper(*args, **kwargs):
        print '在函数执行前加日志'
        ret = fun(*args, **kwargs)
        print '在函数执行后家日志'
        return ret
    return wrapper


@log_wrapper
def test():
    print 'Hello, 世界'

functools.wraps是Python标准库提供的一个特殊的装饰器,用来解决装饰器带来的一些常规问题,如函数名称、doc等的不一致问题。@是Python针对装饰器提供的一个语法糖,上面的@log_wrapper相当于wrap_test = log_rapper(test),用@后,这个步骤由解释器代劳了。

装饰器是Python编程必须掌握的一项技能,在编码过程中经常会用到。

原文地址:http://www.isware.cn/python-design-pattern/04-decorator/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Python进阶框架 希望大家喜欢,点赞哦首先感谢廖雪峰老师对于该课程的讲解 一、函数式编程 1.1 函数式编程简...
    Gaolex阅读 5,523评论 6 53
  • 要点: 函数式编程:注意不是“函数编程”,多了一个“式” 模块:如何使用模块 面向对象编程:面向对象的概念、属性、...
    victorsungo阅读 1,562评论 0 6
  • 教程地址:python进阶 - 慕课网 python函数式编程 变量可以指向函数: f = absprint(f)...
    竹口小生阅读 588评论 0 2
  • 四月的江南。 忽然就春天了,第一次在江南的春天听到春雷,感受磅礴的雨和氤氲的雾气。激灵的闪电穿透在厚重的雾气中,好...
    Noahy阅读 592评论 0 51
  • 1、控制产品质量和价格。 产品质量是企业开展优质服务、提高顾客忠诚度的基础。世界众多品牌产品的发展历史告诉我们,消...
    蟹老闆阅读 3,437评论 3 7