Python装饰器与类的装饰器怎么实现


这篇“Python装饰器与类的装饰器怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python装饰器与类的装饰器怎么实现”文章吧。什么是装饰器?虽然对这个次感到陌生,但是完全不需要担心。首先,装饰器也是一种函数;只不过装饰器可以接收 函数 作为参数来传递。并且可以通过 return 可以返回一个函数,装饰器通过接收一个函数,对它在装饰器内部进行处理、调用,并返回一个新的函数,同时还可以动态增强传入函数的功能。装饰器整个流程是这样的:A函数是装饰器,B函数是A函数传入的参数。将B函数在A函数中执行,在A函数中可以选择执行或不执行,也可以对B函数的结果进行二次加工处理。接下来我们看看 装饰器长什么样子a() 函数中书写了一个 b() 函数,并在 a() 函数中调用 b() 函数。是不是非常类似在类中定义一个局部函数并调用的例子?其实装饰器就是有些类似这样的操作,只不过被装饰器调用的函数是通过 参数 的形式传进去,并在 b() 函数中执行。我们在定义完 a() 函数之后进行调用,可以正常处理。但是 b() 函数 是 a() 函数的局部函数 如果在外部调用会报错。(如上文中的第十行,就会报错)示例如下:在我们日常工作中,装饰器的使用方法有两种。第一种:将被调用的函数直接作用为参数传入装饰器的外围函数括弧内;示例如下:第二种:将装饰器与被调用函数绑定在一起, @ 符号 + 装饰器函数放在被调用函数的上一行,被调用的函数正常定义,只需要直接调用被执行函数即可。示例如下:最常用的装饰器用法为第二种。现在我们构建一个 检查字符串类型的装饰器,加深一下对装饰器的理解。以上就是一个装饰器的简单用法,后续的学习内容会接触到更多的高级用法。classmethod 的功能:可以将类函数不经过实例化即可直接被调用classmethod 的用法:示例如下演示案例:接下来我们不使用 类的实例化 ,直接使用 类 调用 eat() 函数 与 work() 函数再尝试一下看看 没有装饰器的 eat() 函数 与 使用了 classmethod 装饰器 work() 之间可不可以互相调用综合以上两个场景,我们得出以下结论:在带有 classmethod 装饰器 的 函数 内,是无法调用普通的 带有 self 的函数的但是在普通的带有 self 的类函数内,是可以调用带有 c免费云主机域名lassmethod 装饰器 的 函数的staticmethod 的功能:可以将 类函数 不经过实例化而直接被调用,被该装饰器调用的函数不需要传入 self 、cls 参数,并且无法在该函数内调用其他 类函数 或 类变量staticmethod 的用法:参考如下接下来我们在上文的 Cat() 类基础演示一下 staticmethod 装饰器 (新建一个 color() 函数,使用 staticmethod 装饰器 )同样的,也尝试一下 staticmethod 装饰器构造的 color() 函数 是否能够在类函数中互相调用。与带有 classmethod 装饰器 的 函数 一样,staticmethod 装饰器构造的 函数也是无法调用普通的 带有 self 的函数的,这里就不再书写演示代码进行演示了。(staticmethod 装饰器构造的 函数也是无法调用普通的 带有 self 的函数会报错 : NameError: name ‘self’ is not defined )property 的功能:可以将类函数的执行免去小括号,类似于直接调用类的变量(属性)staticmethod 的用法:参考如下重新创建一个 Dog 类 ,然后我们继续演示。首先,我们已经使用了 @property 绑定了我们的 type 函数,这是一个返回值的方法。 所以我们要如何给 type() 函数赋值呢?其实很简单,我们可以通过 @type 对应上 type() 函数,在它的函数内部有一个函数 setter ;然后再定义一个 type 函数,在这个新定义的 type() 函数内定义一个值 value (可以是任意的名字,但这里需要注意,只能定义一个值)。然后再通过设置一个 self.__name = value ,如此就可以达到修改传入参数的目的。废话不多说了,看下方的示例:附:使用最广泛的装饰器为 classmethod以上就是关于“Python装饰器与类的装饰器怎么实现”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注百云主机行业资讯频道。

相关推荐: css中px和em,rem单位的区别是什么

这篇文章主要讲解了“css中px和em,rem单位的区别是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“css中px和em,rem单位的区别是什么”吧!px特点1. IE无法调整那些使用px作为单位的字体大…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 01/14 21:27
下一篇 01/15 09:42

相关推荐