一:函数装饰函数

  1. def wrapFun(func):
  2. def inner(a, b):
  3. print('function name:', func.__name__)
  4. r = func(a, b)
  5. return r
  6. return inner
  7.  
  8. @wrapFun
  9. def myadd(a, b):
  10. return a + b
  11.  
  12. print(myadd(2, 3))

二:函数装饰类

  1. def wrapClass(cls):
  2. def inner(a):
  3. print('class name:', cls.__name__)
  4. return cls(a)
  5. return inner
  6.  
  7. @wrapClass
  8. class Foo():
  9. def __init__(self, a):
  10. self.a = a
  11.  
  12. def fun(self):
  13. print('self.a =', self.a)
  14.  
  15. m = Foo('xiemanR')
  16. m.fun()

三:类装饰函数

  1. class ShowFunName():
  2. def __init__(self, func):
  3. self._func = func
  4.  
  5. def __call__(self, a):
  6. print('function name:', self._func.__name__)
  7. return self._func(a)
  8.  
  9. @ShowFunName
  10. def Bar(a):
  11. return a
  12.  
  13. print(Bar('xiemanR'))

四:类装饰类

  1. class ShowClassName(object):
  2. def __init__(self, cls):
  3. self._cls = cls
  4.  
  5. def __call__(self, a):
  6. print('class name:', self._cls.__name__)
  7. return self._cls(a)
  8.  
  9. @ShowClassName
  10. class Foobar(object):
  11. def __init__(self, a):
  12. self.value = a
  13.  
  14. def fun(self):
  15. print(self.value)
  16.  
  17. a = Foobar('xiemanR')
  18. a.fun()

参考

Python入门之python装饰器的4种类型:函数装饰函数、函数装饰类、类装饰函数、类装饰类的更多相关文章

  1. python装饰器的4种类型:函数装饰函数、函数装饰类、类装饰函数、类装饰类

    一:函数装饰函数 def wrapFun(func): def inner(a, b): print('function name:', func.__name__) r = func(a, b) r ...

  2. Python 入门之 Python三大器 之 装饰器

    Python 入门之 Python三大器 之 装饰器 1.开放封闭原则: (1)代码扩展进行开放 ​ 任何一个程序,不可能在设计之初就已经想好了所有的功能并且未来不做任何更新和修改.所以我们必须允许代 ...

  3. Python编程系列---Python中装饰器的几种形式及万能装饰器

    根据函数是否传参  是否有返回值 ,可以分析出装饰器的四种形式: 形式一:无参无返回值 def outer(func): def wrapper(): print("装饰器功能1" ...

  4. Python 入门之Python简介

    Python 入门之Python简介 1.Python简介: (1) Python的出生: ​ python的创始人为吉多·范罗苏姆(Guido van Rossum)(中文名字:龟叔).1989年的 ...

  5. Python 入门之 Python三大器 之 生成器

    Python 入门之 Python三大器 之 生成器 1.生成器 (1)什么是生成器? 核心:生成器的本质就是一个迭代器 迭代器是Python自带的 生成器程序员自己写的一种迭代器 def func( ...

  6. Python 入门之 Python三大器 之 迭代器

    Python 入门之 Python三大器 之 迭代器 1.迭代器 (1)可迭代对象: <1> 只要具有__ iter __()方法就是一个可迭代对象 (我们可以通过dir()方法去判断一个 ...

  7. Python入门之 Python内置函数

    Python入门之 Python内置函数 函数就是以功能为导向,一个函数封装一个功能,那么Python将一些常用的功能(比如len)给我们封装成了一个一个的函数,供我们使用,他们不仅效率高(底层都是用 ...

  8. Python 入门之Python基础数据类型及其方法

    Python 入门之Python基础数据类型 1. 整型:int 用于计算,用于比较 (在赋值的时候先执行等号右边的内容) 1.1 整数的加 a = 10 b = 20 print(a + b) 结果 ...

  9. Python 入门之Python基础知识

    Python 入门之Python基础知识 1.变量 (1)变量就是把程序运行的中间结果临时存在内存中,以便后续代码使用 (2)变量的作用: 昵称,就是代指内存中某个地址中的内容 a = 123 变量名 ...

随机推荐

  1. 【巷子】---json-server---基本使用

    一.前后端并行开发的痛点 前端需要等待后端开发完接口以后 再根据接口来完成前端的业务逻辑 二.解决方法 在本地模拟后端接口用来测试前端效果 这种做法称之为构建前端Mock   三.json-serve ...

  2. 慕课网,vue高仿饿了吗ASP源码视频笔记

    1.源码笔记 我的源码+笔记(很重要):http://pan.baidu.com/s/1geI4i2Z 感谢麦子学院项目相关视频 2.参考资料 Vue.js官网(https://vuejs.org.c ...

  3. ELKStack之消息队列

    redis消息队列 安装redis yum -y install redis 修改配置文件 修改ip 后台运行 启动 systemctl start redis 查看 lsof -i:6379 连接 ...

  4. MPD大会北京上海两站圆满落幕

    MPD大会北京上海两站圆满落幕 由麦思博(MSUP)主办的亚太软件研发团队管理峰会(以下简称MPD大会)分别于6月15及6月22日在北京.上海成功举办.国内外知名软件.互联网行业项目领头人及业内从业人 ...

  5. 从经典面试题看java中类的加载机制

    1.概述 类加载是Java程序运行的第一步,研究类的加载有助于了解JVM执行过程,并指导开发者采取更有效的措施配合程序执行,对理解java虚拟机的连接模型和java语言的动态性都有很大帮助. 由于Ja ...

  6. iOS-深入理解(转载)

    RunLoop 是 iOS 和 OS X 开发中非常基础的一个概念,这篇文章将从 CFRunLoop 的源码入手,介绍 RunLoop 的概念以及底层实现原理.之后会介绍一下在 iOS 中,苹果是如何 ...

  7. centos7设置iptables

    https://www.linuxidc.com/Linux/2017-10/147238.htm

  8. MySQL多线程备份工具:mydumper

    MySQL多线程备份工具:mydumper http://www.orczhou.com/index.php/2011/12/how-to-split-mysqldump-file/ Mydumper ...

  9. Python高阶函数(Map、Reduce、Filter)

    Map函数 map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回. 举例说明 比如我们有一个函数f(x)=x2,要把这个函数作用 ...

  10. Spark2.x学习笔记:Spark SQL程序设计

    1.RDD的局限性 RDD仅表示数据集,RDD没有元数据,也就是说没有字段语义定义. RDD需要用户自己优化程序,对程序员要求较高. 从不同数据源读取数据相对困难. 合并多个数据源中的数据也较困难. ...