python核心编程学习笔记-2016-08-16-01-可调用对象

        可调用对象

        定义为任何能通过函数操作符“()“来调用的对象,还可以通过函数式编程接口来调用,如apply(),filter(),map()和reduce()等。

        python共有四种可调用对象,分别是函数,方法,类和一些类的的实例(实现了__call__()方法的实例)。

        函数对象,非常好理解,不管是内建函数(BIF)还是用户自定义函数(UDF),显然可以通过函数操作符“()“来调用。对于lambda表达式,它其实定义的也是一个函数对象,只要是函数对象,显然可以用函数操作符“()“来调用。如

>>> lambdaFunc = lambda x: x * 2
>>> lambdaFunc(100)
200
        方法对象,也同函数对象一样, 不管是内建方法(BIM)还是用户自定义方法(UDM),都能通过函数操作符“()“来调用。

同理,类对象也一样,只不过调用类对象一般是创建实例。

>>> class C(object):
...     def __init__(self):
...         pass
...
>>> c = C() # 这既是调用类对象,也是实例化
        最后就是实现了__call__()方法的实例。正常来说,我们调用实例是不需要函数操作符的。如

>>> class C(object):
...     def __init__(self):
...         pass
>>> c = C()
>>> c # 调用实例,不需要函数操作符()
       但是如果实例所属的类中,定义了__call__()方法,情况就发生变化了,如

>>> class C(object):
...     def __init__(self):
...         pass
...
...     def __call__(self, *args):
...         print "I'm callable! Called with args:\n", args
...
>>> c = C()
>>> c() # 用函数操作符()调用实例,即等价于c.__call__()
I'm callable Called with arguments:
()
       从上面的例子可以看出,实现了__call__()方法的实例,当使用用函数操作符()调用实例时,其输出结果就是实例的__call__()方法的输出结果。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值