有一个比较绕的地方,但是我相信我能理解透彻这个里面的逻辑还有原理
def check(func):
print('登录验证')
def inner():
func()
return inner
def fss():
print('发说说')
fss = check(fss)
fss()
这里的fss = check(fss)还有后面的fss()什么意思?怎么理解呢??
首先,fss=check(fss)什么意思呢?就是说,把fss放到了check这个函数里面去了,相当于替换了参数func,然后把check这个函数的返回值赋值给fss。fss虽然是个函数,但是同样他也是一个变量,变量变成了返回inner
但是最后一行又调用了fss(),这个是什么意思呢?
就是说,相当于只执行check这个函数,然后先执行‘登录验证,然后再执行一下fss’
当转化成为装饰器函数的时候只需要改一点点就行了
def check(func):
print('登录验证')
def inner():
func()
return inner
@check
def fss():
print('发说说')
# fss = check(fss)
fss()
2一个简单的例子,我却学了好久,。,,
class Caculator:
def checknumber_zsq(func):
def inner(self,n):
if not isinstance(n,int):
raise TypeError('当前这个数据的类型有问题,应该是一个征信数据')
return func(self,n)
return inner
@checknumber_zsq
def __init__(self,num):
self.__result = num
@checknumber_zsq
def jia(self,n):
self.__result += n
@checknumber_zsq
def jian(self,n):
self.__result -=n
@checknumber_zsq
def cheng(self,n):
self.__result *=n
@checknumber_zsq
def chu(self,n):
self.__result /=n
def show(self):
print('计算的结果是:%d'% self.__result)
c1 = Caculator(2)
c1.jia(6)
c1.show()