一、修饰符
python修饰符 ‘@’引用已有的函数,对下面的函数进行修饰。引用函数必须放在修饰函数的上面,引用函数的返回值,返回给被修饰的函数
例如:先定义一个函数 def funA(fn):再定义一个被修饰的函数
def funA(fn):.......
@funA
def funB():......
在这里,funA是引用的函数,funB是被修饰的函数 。@修饰符的功能就是把funB当做参数传递给funA,然后把funA的返回值返回到funB
@funA 相当于执行 funA(funB)。
注:修饰符“@”后面必须是之前定义的某一个函数;
每个函数只能有一个修饰符,大于等于两个则不可以。
参考与详细
https://www.jianshu.com/p/590a2fac611f
https://www.cnblogs.com/liangxiyang/p/11200476.html
关于装饰器的基础用法官方文档 https://www.runoob.com/w3cnote/python-func-decorators.html解释得非常清楚
二、classmethod 修饰符
官方解释:classmethod 修饰符对应的函数不需要实例化,不需要 self 参数,但第一个参数需要是表示自身类的 cls 参数,可以来调用类的属性,类的方法,实例化对象等。
解释理解:一般创建类(里面包含N个方法)后,需要使用里面的方法实际某种特定功能,需要实例化类,然后再通过实例后的类访问它里面的方法。如
定义一个类及下面的两个方法
class Student(object):
def __init__()
def fun1
def fun2
如果要调用类中的方法的话,要点定义一个类实例
a=Student()
再通过实例a来调用方法函数
a.fun1
a.fun2
而添加classmethod修饰符后,对应的函数不需要实例化,不需要 self 参数,但第一个参数需要是表示自身类的 cls 参数,就可以来调用类的属性,类的方法,
class Student(object):
def __init__()
@classmethod
def fun1
@classmethod
def fun2
可以直接通过Student.fun1(),调用函数
相当于将其提取出来作为了一个函数
参考与详细
官方文档 https://www.runoob.com/python/python-func-classmethod.html
样 例 https://www.cnblogs.com/SusanXX/p/8400302.html
感谢!