详解Python的__call__()方法

详解Python的__call__()方法

Python中那些能够在后面加()来调用执行的对象,被称为可调用对象。可调用对象包括自定义函数、Python内置函数、实例对象和实例方法等。

call()方法是Python中一个很特殊的方法。凡是可调用对象,都可以通过调用__call__()方法来调用该对象。如果类中定义了__call__()方法,那么该类的实例对象也将成为可调用对象。该对象被调用时,将执行__call__()方法中的代码。

下面我们分别对这几种可调用对象执行__call__()方法。

自定义函数

对于自定义函数的调用,通常情况下是在函数名后加()来调用。但同样也可以用__call__()方法来调用。

def test():
    print("Function test() is called")

print("Function test() is callable: %s" % callable(test))
test()
test.__call__()

输出结果:

Function test() is callable: True
Function test() is called
Function test() is called

内置函数

内置函数同样也可以用__call__()方法来调用。

print("Build-in function int() is callable: %s" % callable(int))
print(int(3))
print(int.__call__(3))

输出结果:

Build-in function int() is callable: True
3
3

类的实例对象

如果一个类中没有定义__call__()方法,那么这个类的实例对象是不可以被调用的。

class Person(object):
    pass

c = Person()
print("Object c is callable: %s" % callable(c))

输出结果:

Object c is callable: False

但如果类中定义了__call__()方法,那么这个类的实例对象是可以被调用的。调用该实例对象就是执行__call__()方法中的代码。

class Person(object):

    def __call__(self):
        print("Method __call__() is called")

d = Person()
print("Object d is callable: %s" % callable(d))
d()

输出结果:

Object d is callable: True
Method __call__() is called

参考

Python call()方法(详解版)

  • 30
    点赞
  • 132
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值