python中的__call__方法
程序员文章站
2022-06-12 08:25:34
...
首先__call__()是什么?
带有双下划线 的__call__()是python 定义的类中的特殊方法
先上结论:如果在python中的类中定义了个__call__()方法,
该类的实例对象可以被调用,对象可以充当函数的作用。
举例说明
class Power(object):
def __init__(self):
pass
def __call__(self,x,n):
return x**n
def calculate(self,x,n)
return x**n
我们定义了一个Power类 功能是计算x的n次方。例如计算2的3次方,如何调用这个功能来计算呢。
上代码
power=Power()
power.calculate(2,3)#通过掉用对象power的calculate方法
# out:8
通过调用对象power的calculate方法,可以实现该功能
但是当我们学会__call__()方法后,可以直接这样
power=Power()#先实例化创造一个对象power
power(2,3)#通过掉用对象power的calculate方法
# out:8
此时的power对象直接被掉用,作用类似于方法
所以__call__ 可以让我们直接掉用对象,充当函数的作用。
优点
- 省去绞尽脑汁去命名方法,定义__call__()方法,实现一定功能
- 直接调用对象,简介明了
通__call__()方法,可以看出python中对象和函数的关系,对象可以充当函数。函数本身也是对象,python中万物皆对象