python call方法有什么用
__call__()方法的作用其实是把一个类的实例化对象变成了可调用对象,也就是说把一个类的实例化对象变成了可调用对象,只要类里实现了__call__()方法就行。
如当类里没有实现__call__()时,此时的对象p 只是个类的实例,不是一个可调用的对象,当调用它时会报错:'Person' object is not callable
如下图:
现在把Person类的实例p变成可调用的对象
单看 p('Tim') 你无法确定 p 是一个函数还是一个类实例,所以,在Python中,函数也是对象,对象和函数的区别并不显著。
其实p('Tim')相当于#-->p.__call__('Tim')
总结:1.python 可调用对象:可以通过内置函数callable来判断,如:
print(callable(p))#True
2.如果类定义了__call__方法,那么它的实例可以变为可调用对象