使用类来写装饰器

2017-01-16 分类:Python 阅读(971) 评论(2)

前两天发现了装饰器可以直接使用类来写,分享一下,需要用类里面的__call__方法,__call__方法就是可以把这个实例当成一个函数来调用,如果正常使用类里面的方法的话,实例方法要先实例化类,然后才能调用,静态方法、类方法则需要用类名或者实例化之后的对象来调用,而实例化之后的这个对象,是不能被调用的,__call__方法就是把这个实例变成一个可以调用的对象,也就是说实例化之后,这个对象就可以和一个普通函数一样被调用。

示例代码如下:

运行结果:

理解了上面的之后,就可以使用class来写一个装饰器了,计算程序的运行时间,当然思想和以前用函数写装饰器是一样的

运行结果:

 

您可能也喜欢:

协程、gevent实现异步io、进程、线程、协程对比

异步io的说白了就是遇到io操作的时候,就停下来去做别的事情。io分网络io和磁盘io,网络io比如说打开一个网站获取数据,下载一首歌等等,磁盘io就是把数据存到一个文件里面,写到磁盘上。 从网站上获取数据或者把数据写到磁盘上都是需要时间的,那就得等待了,这样的话,很多任务的时候就比较慢了,而异步i...

more

迭代器、生成器

迭代器只有在调用next的时候才会取数据(所以省内存),或者循环的时候,一个对象里面实现了__iter__方法,iter方法里面返回了一个迭代器,那就是一个可迭代对象了。 下面的代码,首先实现了iter方法,这个对象就是一个可迭代对象了,然后又返回了self就是自己,就是一个迭代器了。 使用for ...

more

socket、tcp/ip协议、udp协议

socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求。 socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,对于文件用【打开】【读写】【关闭】模式来操作。socket就是该模式的一个实现,...

more

评论&留言
欢迎新朋友你的到来!
已经有2 条评论抢在你前面了~
昵称

  1. 匿名

    嘚嘚嘚

    #1
    回复
  2. 莫愁

    牛牛,我要给你生个猴子!

    #2
    回复

登录

忘记密码 ?

切换登录

注册