如何使用Python的装饰器
导读:本文共3262.5字符,通常情况下阅读需要11分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 1.定义及使用例1:装饰器定义: def 装饰器函数(外部函数): def 内联函数(*args,**kwargs): ...前置装饰... 外部函数(*args,**kwargs) ...后置装饰... return 内联函数例2:装饰器两种调用方式第一种:装饰器函数(外部函数)(参数1,参数2... ...
目录
(为您整理了一些要点),点击可以直达。例1:装饰器定义:
def 装饰器函数(外部函数):
def 内联函数(*args,**kwargs):
...前置装饰...
外部函数(*args,**kwargs)
...后置装饰...
return 内联函数
例2:装饰器两种调用方式
第一种:装饰器函数(外部函数)(参数1,参数2......)
第二种:定义时通过 @装饰器函数名 绑定 外部函数(外部函数调用时触发)
1.被@classmethod
装饰的类方法可以通过class.方法(参数1,参数2......)调用
2.但是定义函数时 self 需要变成 cls
3.其内部不能调用类的普通方法(无装饰器修饰的方法),可以调用@classmethod
,@staticmethod
装饰的方法
4.能访问类的属性
5.普通类中能通过self调用@classmethod装饰的方法
@staticmethod
1. 被@staticmethod装饰的类方法可以通过class.方法(参数1,参数2......)调用
2. 但是定义函数时 无须self和cls
3. 由于其无self,cls注定其无法访问类属性&调用类方法
4. 在类的普通方法中可以通过self调用@staticmethod装饰的方法
@property
1.@property装饰的函数被用来代替类中与函数名相同的属性
定义: @property
def 属性名(self):
.......
2.被@property装饰器代替的属性,无法通过object.属性名=属性值进行赋值(除非使用了@属性名.setter装饰器):
定义: @属性名.setter
def 属性名(self,属性值):
......
3.被@property修饰的函数不能在外部通过object.函数名()调用,只能object.函数名 当做属性
4.只有被@property代替了的属性才能使用@属性名.setter 装饰器
5. __setattr__ 的优先级高于 @属性名.setter装饰器的优先级
@property
如何使用Python的装饰器的详细内容,希望对您有所帮助,信息来源于网络。