漫谈

如果作为一个Python入门,不了解Python装饰器也没什么,但是如果作为一个中级Python开发人员,如果再不对python装饰器熟稔于心的话,那么可能并没有量变积累到质变。

我以前也看过很多讲python 装饰器的文章,但是都是看了就忘。一方面是没有做太多的练习,二是对它的领会不是很深。

希望引以为戒!!!

郑传

装饰模式

如果你了解Java,你肯定听过 装饰器模式。在面向对象中,装饰模式指:动态地给一个对象添加一些额外的职责。就增加一些功能来说,装饰模式比生成子类更为灵活。

在设计模式学习----装饰器模式,我摘取了下面一段使用装饰器模式的代码

public class DecoratorPattern {

/**

* @param args the command line arguments

*/

public static void main(String[] args) {

// TODO code application logic here

Basket basket = new Original();

//一个装饰的过程

Basket myBasket =new AppleDecorator(new BananaDecorator(new OrangeDecorator(basket)));

myBasket.show();

}

}

等会注意下 Basket myBasket =new AppleDecorator(new BananaDecorator(new OrangeDecorator(basket))) 这段的写法

在Python官方文档PythonDecorators 是这么介绍装饰器的

What is a Decorator

A decorator is the name used for a software design pattern. Decorators dynamically alter the functionality of a function, method, or class without having to directly use subclasses or change the source code of the function being decorated.

翻一下: 就是装饰器是一种软件设计模式,被用来动态修改函数、方法,或者类功能却不是通过子类,或者修改原代码实现。

跟之前是一个意思!!!

Python Decorator

而Python的装饰器与之不同,官方这么说:

The "decorators" we talk about with concern to Python are not exactly the same thing as the DecoratorPattern described above. A Python decorator is a specific change to the Python syntax that allows us to more conveniently alter functions and methods (and possibly classes in a future version). This supports more readable applications of the DecoratorPattern but also other uses as well.

Support for the decorator syntax was proposed for Python in PEP 318, and will be implemented in Python 2.4.

翻译下:Python的 decorators 与 DecoratorPattern并不完全相同。 Python的decorator是一种特殊:在语法上实现允许我们更灵活地更改方法,或者函数。

例子:

@classmethod

def foo (arg1, arg2):

....

记住这个特殊的语法,后面我们会展示这个强大的语法糖

python中的装饰器、装饰器模式_浅析Python装饰器以及装饰器模式相关推荐

  1. python中导入模块是用哪个关键字_关于python导入模块import与常见的模块详解

    0.什么是python模块?干什么的用的? Java中如果使用abs()函数,则需要需要导入Math包,同样python也是封装的,因为python提供的函数太多,所以根据函数的功能将其封装在不同的m ...

  2. python中pass语句的作用是什么_简述 Python 中 pass 语句的作用。

    [单选题]从总体中抽取的样本数据的频率分布直方图如图所示,若总体中85%的数据不超过b,则b的估计值为( ) [单选题]Graphically, competitive market supply i ...

  3. python中常见的三种选择结构_在Python中,实现多分支选择结构的最佳方法是

    在Python中,实现多分支选择结构的最佳方法是 答:if-elif-else 绘制建筑平面图时,被剖切的墙用 线绘制,定位轴线用 线绘制 答:粗实 细点画 智慧职教: 下列关于书写住院病历的叙述不正 ...

  4. 在python中是否可以使用if作为变量名_在Python中可以使用if 作为变量名_python使用符号 标示注释...

    在Python中可以使用if 作为变量名 答:× " src=" " style="max-width: 100%; display: inline;" ...

  5. python中、print程序设计基础输出是_在python编程里, print 4> 2 and 1 and 4 输出的是什么?...

    展开全部 题主你好, 先说结果: 该表达式输出为整数: 4 下面详细的解释e5a48de588b662616964757a686964616f31333433643632一下为什么输出的是:4. 首先 ...

  6. python中以下关于列表描述错误的_在Python中,以下关于函数的描述错误的是哪一项?...

    [判断题]Python内置函数len____可以返回列表.元组.字典.集合.字符串以及range对象中元素个数. [判断题]Python内置函数max____用来返回序列中的最大元素. [判断题]Py ...

  7. python中if有几种使用方式_在 Python 中可以使用 if 作为变量名。 (2.0分)_学小易找答案...

    [判断题]尽管可以使用 import 语句一次导入任意多个标准库或扩展库,但是仍建议每次只导入一个标准库或扩展库. (2.0分) [简答题]写出 Python 运算符 & 的两种功能? (5. ...

  8. python中形参只在函数内部有效_【Python】函数

    Python函数 >>>转到思维导图>>>转到博客园 函数的返回值 函数内要想返回给调用者值 必须用关键字return 不写return:函数默认返回None de ...

  9. python中的换行符是哪个键_对Python字符串中的换行符和制表符介绍

    对Python字符串中的换行符和制表符介绍 有关换行的问题 首先提一个问题,如下. python程序代码如下: print("I'm Bob. What's your name?" ...

  10. python中的pop函数和append函数_对python中的pop函数和append函数详解

    pop()函数 1.描述 pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值. 语法 pop()方法语法: list.pop(obj=list[-1]) 2.参数 obj ...

最新文章

  1. Ubuntu16下安装kaldi(使用物理主机)
  2. CocoaPods版本升级
  3. html文字字号不改变,如何在不改变div大小的情况下更改HTML / css中的字体大小?...
  4. Spring Cloud Stream整合RabbitMQ
  5. Sun地系统架构师考试(SCEA)
  6. 《终身成长》读书笔记(part1)--杰出的人有着一种能够准确评估自己的能力和不足的独特才能
  7. Microsoft Teams:删除成员账户其历史聊天会发生什么?
  8. shell脚本判断上一个命令是否执行成功
  9. Ansible,Linux应用程序,Jupyter笔记本,Raspberry Pi婴儿监视器,Python等
  10. 小米公寓,年轻人的第一套公寓?回应来了
  11. 过程中存根的作用有_[马哲54]人民群众在创造历史过程中的决定作用
  12. 小红书下拉词是什么?小红薯下拉框怎么做?下拉词框如何应用?
  13. logstash收集nginx日志
  14. 实现一个左滑删除功能
  15. Mac实用软件及功能吐血总结
  16. 【网络】交换机常用命令
  17. 2021瑞安高考成绩查询,2021年瑞安高考状元名单公布,瑞安文理科状元是谁多少分...
  18. Anaconda基本教程及常用命令(介绍、安装、基本操作、管理环境、管理包、conda和pip以及借助pqi换源)
  19. 亚马逊跨境电商如何运营模式?
  20. 软件推荐 scrcpy

热门文章

  1. Codeforces 405D 数学问题
  2. Asp.net MVC代替php
  3. 一位Erlang程序员的自白
  4. Microsoft.mshtml到底是什么?
  5. java中异常抛出后代码还会继续执行吗
  6. 引用opencv异常
  7. Diy页面服务端渲染解决方案
  8. 微信公众号使用LocalStorage解决返回缓存问题
  9. Python实战从入门到精通第五讲——数据结构与算法3之序列中出现最多的元素
  10. 浙大 PAT 乙级1055