Python编程:如何实现类装饰器及应用?要点要掌握

开发 前端
函数装饰器的wrapper函数中,我们可使用return关键字返回装饰过的函数。我们会在这里做同样的事情,但是在__call__方法里面。

示例

Python中的装饰器既可以是函数也可以是类。在前几节中,我们使用的是函数装饰器。现在,我们将学习如何定义类装饰器。

我们将定义充当装饰器的自定义类。当用类装饰/修饰函数时,该函数就成为该类的实例。让我们来一探究竟:

如上所示,我们创建了一个简单的类装饰器。任何类要成为装饰器,都需要实现__call__()方法。__call__()方法的作用与函数装饰器中的包装器函数相同。

现在让我们用这个类来装饰一个函数:

运行程序输出结果如下:

带*args和**kwargs参数的类装饰器

为了让类装饰器使用参数用*args和**kwargs,我们需要使用这些参数来实现__call__()方法,并将其传递给被修饰的函数。通用的表示方法如下:

上面的代码中,类装饰器的__call__()方法接受*args和**kwargs参数。在代码行中,call方法将它们传递给所装饰的函数:self.func(*args,**kwargs)。

现在我们用这个类装饰器来装饰一个函数:

类装饰装饰函数

运行程序所输出结果类似如下:

Hello Solo Cui

带return语句的类装饰器

还记得在函数装饰器的wrapper函数中,我们可使用return关键字返回装饰过的函数。我们会在这里做同样的事情,但是在__call__方法里面。

返回结果的类装饰器

运行程序输出结果如下:

TRACY CUI

如上所示,我们是在__call__方法中将修饰过的函数返回:

return self.func(*args,**args)

至此,关于Python的装饰器就介绍完了。

责任编辑:武晓燕 来源: 今日头条
相关推荐

2021-07-12 10:24:36

Go装饰器代码

2010-02-01 17:50:32

Python装饰器

2022-09-19 23:04:08

Python装饰器语言

2021-04-18 07:09:50

工具类异步编程

2023-04-19 08:43:52

Python面向对象编程

2010-06-30 13:02:30

2024-02-04 17:21:37

C++编程开发

2022-09-07 10:20:05

Python装饰类

2023-02-07 07:47:52

Python装饰器函数

2022-10-21 07:50:35

装饰器Python编程

2023-05-10 07:42:26

Java多线程编程

2020-11-17 09:10:44

装饰器

2021-06-14 09:25:20

PythonPython 3.9编程语言

2016-11-01 09:24:38

Python装饰器

2017-08-07 15:19:30

编程语言快速

2021-06-01 07:19:58

Python函数装饰器

2023-12-11 15:51:00

Python装饰器代码

2021-01-16 11:44:46

编程语言开发

2024-04-10 12:27:43

Python设计模式开发

2022-09-14 08:16:48

装饰器模式对象
点赞
收藏

51CTO技术栈公众号