欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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__ 可以让我们直接掉用对象,充当函数的作用。

优点

  1. 省去绞尽脑汁去命名方法,定义__call__()方法,实现一定功能
  2. 直接调用对象,简介明了
    通__call__()方法,可以看出python中对象和函数的关系,对象可以充当函数。函数本身也是对象,python中万物皆对象