您好,欢迎来到尔游网。
搜索
您的当前位置:首页python类装饰器即__call__方法

python类装饰器即__call__方法

来源:尔游网
python类装饰器即__call__⽅法

上⼀篇中我对学习过程中的装饰器进⾏了总结和整理,这⼀节简单整理下类装饰器1.类中的__call__⽅法:

我们在定义好⼀个类后,实例化出⼀个对象,如果对这个对象以直接在后边加括号的⽅式进⾏调⽤,程序就会报错。也就是在类中这种做法是错误的;

⽽,如果⼀个类中写⼊了__call__⽅法,当我问在对实例对象以括号的⽅式进⾏调⽤时,__call__⽅法中的语句就会被执⾏,代码如下:

1 import time

2 # 定义⼀个Time类 3 class Time(object): 4 def __init__(self,a): 5 self.a = a

6 def __call__(self, *args, **kwargs): 7 print(self.a ) 8 # 对类进⾏实例化 9 now = time.ctime()10 c = Time(now)

11 # 调⽤类中的call⽅法12 c()

13 # 结果为:Tue Jun 12 17:28:53 2018

2.类作为装饰器的底层原理和上⼀篇中所谈到的是⼀致的,以下边代码为⽰例:

# 定义⼀个Time类class Time(object):

def __init__(self,func): # 注意这⾥要设定参数接收Test self._func = func def __call__(self):

print('我可以对函数进⾏装饰') print(\"----------------------------\") self._func()

@Time # 等价于 Test = Time(Test)def Test():

print('测试⼀下可不可以.')Test()

#结果为:

#我可以对函数进⾏装饰#----------------------------#测试⼀下可不可以.

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- axer.cn 版权所有 湘ICP备2023022495号-12

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务