码迷,mamicode.com
首页 > 编程语言 > 详细

python的高级特性3:神奇的__call__

时间:2015-07-19 23:19:00      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:

__call__是一个很神奇的特性,只要某个类型中有__call__方法,,我们可以把这个类型的对象当作函数来使用。

也许说的比较抽象,举个例子就会明白。

In [107]: f = abs

In [108]: f(-10)
Out[108]: 10

In [109]: dir(f)
Out[109]: 
[__call__,
 __class__,
 __delattr__,
 __dir__,
...]

上例中的f对象指向了abs类型,由于f对象中有__call__方法,因此f(-10)实现了对abs(-10)的重载。

 

ps:由于变量/对象/实例可以指向函数,而函数能够接受变量,因此可以看出函数可以接受另一个函数作为参数,所以__call__就实现装饰器的基础。

python的高级特性3:神奇的__call__

标签:

原文地址:http://www.cnblogs.com/alexkn/p/4659921.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!