Python入门之python装饰器的4种类型:函数装饰函数、函数装饰类、类装饰函数、类装饰类

一:函数装饰函数

def wrapFun(func):
    def inner(a, b):
        print(‘function name:‘, func.__name__)
        r = func(a, b)
        return r
    return inner

@wrapFun
def myadd(a, b):
    return a + b

print(myadd(2, 3))

二:函数装饰类

def wrapClass(cls):
    def inner(a):
        print(‘class name:‘, cls.__name__)
        return cls(a)
    return inner

@wrapClass
class Foo():
    def __init__(self, a):
        self.a = a

    def fun(self):
        print(‘self.a =‘, self.a)

m = Foo(‘xiemanR‘)
m.fun()

三:类装饰函数

class ShowFunName():
    def __init__(self, func):
        self._func = func

    def __call__(self, a):
        print(‘function name:‘, self._func.__name__)
        return self._func(a)

@ShowFunName
def Bar(a):
    return a

print(Bar(‘xiemanR‘))

四:类装饰类

class ShowClassName(object):
    def __init__(self, cls):
        self._cls = cls

    def __call__(self, a):
        print(‘class name:‘, self._cls.__name__)
        return self._cls(a)

@ShowClassName
class Foobar(object):
    def __init__(self, a):
        self.value = a

    def fun(self):
        print(self.value)

a = Foobar(‘xiemanR‘)
a.fun()

参考

原文地址:https://www.cnblogs.com/JetpropelledSnake/p/8909136.html

时间: 2024-11-09 06:04:21

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

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

根据函数是否传参  是否有返回值 ,可以分析出装饰器的四种形式: 形式一:无参无返回值 1 def outer(func): 2 def wrapper(): 3 print("装饰器功能1") 4 ret = func() 5 print("装饰器功能2") return ret 6 return wrapper 7 8 # 定义一个无参无返回值的函数 9 @outer 10 def main_func(): 11 print("hello")

Python 入门之Python基础知识

Python 入门之Python基础知识 1.变量 (1)变量就是把程序运行的中间结果临时存在内存中,以便后续代码使用 (2)变量的作用: 昵称,就是代指内存中某个地址中的内容 a = 123 变量名 赋值 值 (3)变量命名的规则: (1). 变量名由字母.数字.下划线组成 (2). 变量名不能以数字开头 (3). 变量名要具有可描述性 (4). 变量名要区分大小写 (5). 变量名禁止使用Python关键字 (6). 变量名不能使用中文和拼音(不是不能使用,太low) (7). 变量名推荐写

Python入门 —— 初识Python

Python入门 —— 初识Python Python入门 —— 初识Python 一:Python介绍 1. Python是什么? Python是一门编程语言,编程语言是一门语言. 语言就是一个事物与另一个事物沟通的工具. 而编程语言则是人与计算机沟通的介质. 2. 为什么要跟计算机沟通:为了奴役计算机 奴隶主--------(人类语言)------->奴隶 人类----------(编程语言)------->计算机 3. 什么是编程? 奴隶主把想让计算机替自己做事情的逻辑用编程语言给表达出

Python入门之Python的单例模式和元类

本章内容 一.单例模式 二.元类 ============================= 一.单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在. 当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场.例如,某个服务器程序的配置信息存放在一个文件中,客户通过一个AppConfig的类来读取配置文件的信息.如果在程序运行期间,有很多地方需要使用配置文件的内容,也就是说,很多地方都需要创建AppConf

boost.python入门教程 ----python 嵌入c++

boost.python 中 python 嵌入c++ 部分,网上找到的中文资料似乎都有些过时了, 如 boost.python学习笔记 http://edyfox.codecarver.org/html/boost_python.html 在boost.python版本2中,提供更加简洁易用的接口,我们可以使用从而 代替原始的PyRun_SimpleString等等python c 转换api. 关于python与C++混合编程,事实上有两个部分 extending   所谓python 程序

python入门之python介绍

python基础之Python优点 1.简单:Python是一种代表简单主义思想的语言.阅读一个良好的Python程序就感觉像是在读英语一样.它使你能够专注于解决问题而不是去搞明白语言本身. 2.易学:Python极其容易上手,因为Python有极其简单的说明文档[5]  . 3.速度快:Python 的底层是用 C 语言写的,很多标准库和第三方库也都是用 C 写的,运行速度非常快. 4.免费.开源:Python是FLOSS(自由/开放源码软件)之一.使用者可以自由地发布这个软件的拷贝.阅读它的

python入门、python数据分析(numpy、matplotlib、sklearn等)tensflow、爬虫、机器学习、深度学习、自然语言处理、数据挖掘、机器学习项目实战、python全栈、PHP、java、java web、openCV、hadoop、matlab、android、数据结构算法和刷题等教学视频

扫描二维码加好友购买视频,绝对优惠,谢谢支持. python入门和进阶熟练教学视频 入门: 进阶: python数据分析教学视频 python数据分析晋级班 tensorflow教程及实战 python爬虫教学 机器学习课程 深度学习课程 机器学习项目班 自然语言处理教学视频 python全栈教学视频 数据挖掘视频 PHP教学视频 java java web openCV教学视频 Hadoop教学视频 matlab教学 andriod教学视频 数据结构算法班及面试班 原文地址:https://w

python入门(Python和Pycharm安装)

Python简介 Python是一种计算机程序设计语言,它结合了解释性.编译性.互动性和面向对象的脚本语言,非常简单易用.Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构.很多著名的网站都是用它编写的,如豆瓣.YouTube等.随着现在运维自动化,云计算,虚拟化,机器智能等技术的快速发展,python在我们的视野中也越来越受重视,许多大型网站就是用Python开发的,例如YouTube.Instagram,Google

Python入门之Python引用模块和查找模块路径

#这篇文章主要介绍了Python引用模块和Python查找模块路径的相关资料,需要的朋友可以参考下 模块间相互独立相互引用是任何一种编程语言的基础能力.对于"模块"这个词在各种编程语言中或许是不同的,但我们可以简单认为一个程序文件是一个模块,文件里包含了类或者方法的定义.对于编译型的语言,比如C#中的一个.cs文件,Java中的一个.java或者编译后的.class文件可以认为是一个模块(但常常不表述为模块):对于解释型的语言会更加直观些,比如PHP的.php文件,在Python中就是