iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python装饰器的定义形式有哪些
  • 400
分享到

Python装饰器的定义形式有哪些

2023-07-04 15:07:21 400人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要讲解了“python装饰器的定义形式有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python装饰器的定义形式有哪些”吧!前言装饰器(decorator)在Python框架

这篇文章主要讲解了“python装饰器的定义形式有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python装饰器的定义形式有哪些”吧!

前言

装饰器(decorator)在Python框架中扮演着重要角色,是Python中实现切面编程(aop)的重要手段。

aspect-oriented programming (AOP) ,在不改变代码自身的前提下增加程序功能

不改变代码自身,但需要在函数和类头上加一个标注(annotation),这个标注在Python里叫装饰器,在java里叫注解。
在Python里,一共有四种组合形式。下面一一举例。

用函数装饰函数

采用一个函数定义装饰器:

def decorate(f):    def wrapper(*args):        return f(*args)*2    return wrapper

然后作用在一个函数上:

@decoratedef add(a, b):return a + b

测试一下效果:

def test_decorate():sum = add(3, 5)assert sum == 16

用函数装饰一个类

这里通过装饰器实现单例模式:

def singleton(cls):    instances = {}    def wrapper(*args, **kwargs):        if cls not in instances:          instances[cls] = cls(*args, **kwargs)        return instances[cls]    return wrapper

使用该装饰器:

@singletonclass MyClass:    def method(self):        pass

于是,当你定义多个对象时,返回的是同一实例:

obj = MyClass()  # creates a new instanceobj2 = MyClass()  # returns the same instanceobj3 = MyClass()  # returns the same instance...

用类定义装饰器,然后装饰一个函数

先采用类定义一个装饰器:

class Star:    def __init__(self, n):        self.n = n    def __call__(self, fn):        @wraps(fn)        def wrapper(*args, **kwargs):            result = fn(*args, **kwargs)            return result        return wrapper

再作用在一个函数上:

@Star(5)def add(a, b):    return a + b

主要是在类中实现__call__方法。上面例子也可以简化:

class MyDecorator:    def __init__(self, function):        self.function = function         def __call__(self, *args, **kwargs):         # We can add some code        # before function call         self.function(*args, **kwargs)         # We can also add some code        # after function call.# adding class decorator to the function@MyDecoratordef function(name, message ='Hello'):    print("{}, {}".fORMat(message, name))

用类定义装饰器,然后装饰一个类

先定义装饰器:

class MyClassDecorator(object):_instances = dict()def __init__(self, name):passdef __call__(self, cls):class WrappedClass(cls):def say_hello(self):print(f'Hello: {self.username}')return WrappedClass

该装饰器给被装饰的类上添加了一个方法,名称为say_hello()。使用如下:

@MyClassDecorator('test')class MyClass():def __init__(self, username):self.username = username

然后:

def test_decoratorforclass():obj = MyClass('user1')obj.say_hello()

打印出: Hello: user1

感谢各位的阅读,以上就是“Python装饰器的定义形式有哪些”的内容了,经过本文的学习后,相信大家对Python装饰器的定义形式有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: Python装饰器的定义形式有哪些

本文链接: https://www.lsjlt.com/news/346393.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python装饰器的定义形式有哪些
    这篇文章主要讲解了“Python装饰器的定义形式有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python装饰器的定义形式有哪些”吧!前言装饰器(decorator)在Python框架...
    99+
    2023-07-04
  • Python装饰器怎么定义
    这篇文章主要介绍“Python装饰器怎么定义”,在日常操作中,相信很多人在Python装饰器怎么定义问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python装饰器怎么定义”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-02
  • python中的装饰器怎么定义
    这篇文章主要介绍“python中的装饰器怎么定义”,在日常操作中,相信很多人在python中的装饰器怎么定义问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python中的装饰器怎么定义”的疑惑有所帮助!接下来...
    99+
    2023-06-02
  • python装饰器的作用有哪些
    这期内容当中小编将会给大家带来有关python装饰器的作用有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。python是什么意思Python是一种跨平台的、具有解释性、编译性、互动性和面向对象的脚本语...
    99+
    2023-06-14
  • python装饰器的定义及用法
    本篇内容主要讲解“python装饰器的定义及用法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python装饰器的定义及用法”吧!  定义:  本质是函数(装饰其他函数),就是为其他函数添加附加...
    99+
    2023-06-02
  • python常用装饰器有哪些
    python中常用的装饰器有以下几种@property@property是python的一种装饰器,常用于用来修饰方法。class DataSet(object):@propertydef method_with_property(self...
    99+
    2024-04-02
  • Python装饰器的练习题有哪些
    这篇文章主要讲解了“Python装饰器的练习题有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python装饰器的练习题有哪些”吧!1.请实现一个装饰器,把函数的返回值+100然后返回d...
    99+
    2023-06-25
  • python元组的定义方式有哪些
    Python元组的定义方式有以下几种: 使用逗号分隔的值: tuple1 = 1, 2, 3 使用圆括号括起来的值: tup...
    99+
    2023-10-23
    python
  • Python装饰器的定义和使用详情
    目录1.装饰器的定义2.装饰器的通用类型的定义3.多个装饰器同时装饰一个函数4.多个装饰器同时装饰一个函数(二)5.类装饰器使用方法6.使用装饰器实现自动维护路由表1.装饰器的定义 ...
    99+
    2024-04-02
  • es6装饰器有哪些
    这篇“es6装饰器有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“es6装饰器有哪些”...
    99+
    2024-04-02
  • Python中的装饰器知识点有哪些
    这篇文章主要介绍“Python中的装饰器知识点有哪些”,在日常操作中,相信很多人在Python中的装饰器知识点有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python中的装饰器知识点有哪些”的疑惑有所...
    99+
    2023-07-02
  • Python闭包与装饰器怎么定义
    这篇文章主要介绍“Python闭包与装饰器怎么定义”,在日常操作中,相信很多人在Python闭包与装饰器怎么定义问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python闭包与装饰器怎么定义”的疑惑有所帮助!...
    99+
    2023-07-06
  • Python装饰器有哪些绝妙的用法
    目录自定义第三方工具包内置装饰器的价值不言而喻,可以用来增强函数功能、简化代码、减少代码冗余。 它的使用场景同样很多,比较简单的场景包含打印日志、统计运行时间,这类例子和用法网上已经...
    99+
    2024-04-02
  • Python装饰器的使用方法有哪些
    这篇文章主要介绍了Python装饰器的使用方法有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python装饰器的使用方法有哪些文章都会有所收获,下面我们一起来看看吧。装饰器的价值不言而喻,可以用来增强函数...
    99+
    2023-07-02
  • python字符串定义的方式有哪些
    本篇文章和大家了解一下python字符串定义的方式有哪些。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。Python是一种广泛使用的编程语言,特别是在数据分析、机器学习和人工智能领域。在Python中,字符串是一个非常重要...
    99+
    2023-07-06
  • Python装饰器的相关知识点有哪些
    这篇文章主要介绍“Python装饰器的相关知识点有哪些”,在日常操作中,相信很多人在Python装饰器的相关知识点有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python装饰器的相关知识点有哪些”的疑...
    99+
    2023-06-25
  • Python中装饰器的应用场景有哪些
    这篇文章将为大家详细讲解有关Python中装饰器的应用场景有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。python主要应用领域有哪些1、云计算,典型应用OpenStack。2、WEB...
    99+
    2023-06-14
  • Python单元测试中有哪些装饰器
    Python单元测试中有哪些装饰器?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Python单元测试unittest中提供了一下四种装饰器实现测试跳过和预期故障...
    99+
    2023-05-31
    python 中有
  • Angular中的类装饰器有哪些
    这篇文章主要介绍了Angular中的类装饰器有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。angular共有5种类装饰器,表明每个类的...
    99+
    2024-04-02
  • python输入形式有哪些
    python中的输入形式有以下三种input()input()只能接受数字的输入,其返回的是数字的类型;import sysa = input("input a: ")print(a,type(a))raw_input()raw_input...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作