python代码,装饰器如何作用到class类上?
发布于 作者:苏南大叔 来源:程序如此灵动~

还是继续讨论python
装饰器的用法,在前几篇文章中,苏南大叔对python
的装饰器的写法做了一些分析。但是,主要的写法还是函数类似的写法。那么,python
装饰器可以在类中使用么?装饰器如何对类作用?这就是本文中要重点讨论的问题。

大家好,这里是苏南大叔的程序如此灵动博客,这里记录苏南大叔和计算机代码的故事。本文展示装饰器功能和类之间的功能联系。本文测试环境:win10
,python@3.6.8
。
装饰器作用于类的方法
这个作用于类的方法上面的装饰器用法,非常好理解。不用过多解释。

装饰器也可以作用于类
装饰器也可以作用于类上,不过写法和作用于函数的时候,差别较大。装饰器的逻辑修改的效果,实际上作用于类的__init__
方法上。下面的是个代码例子:
这个作用于类上面的装饰器,不用两个def
。但是,必须实现:
- 接收
cls
类参数 - 写好逻辑前置逻辑后,需要
return cls
。(意思是没地方写后置逻辑)

如果检测被装饰的类的__name__
和__doc__
的话,会发现没有任何变化。如果检测__code__
的话,会发现报错没有这个属性。
作用于类的装饰器特殊用法
下面的这个例子中,使用装饰器把一个类硬生生的改成了另外一个类,而且还悄无声息。仅仅用于大家加深理解。

相关文章
- https://newsn.net/say/python-decorators.html
- https://newsn.net/say/python-decorators-2.html
- https://newsn.net/say/python-decorators-3.html
综述
本文是python
装饰器系列文章中的一篇文章,主要致力于说明装饰器和类的关系。更多python
经验文章,请点击:


