对python特殊函数__call__()的使用详解

  

<强> __call__

  

在Python中,函数其实是一个对象:

        在在在f=abs   在在在f.__name__   “abs”   在在在f (-123)      

由于f可以被调用,所以,f被称为可调用对象。

  

所有的函数都是可调用对象。

  

一个类实例也可以变成一个可调用对象,只需要实现一个特殊方法__call__ ()。

  

我们把人类变成一个可调用对象:

        类人(对象):   def __init__(自我、名字、性别):   self.name=名字   自我。性别=性别      def __call__(自我、朋友):   打印“我的名字是% s…' % self.name   打印我的朋友是% s…' %的朋友   之前      

现在可以对人实例直接调用:

        在在在p=人(“鲍勃”、“男性”)   在在在p (Tim)   我的名字是鲍勃……   我的朋友是蒂姆…      

单看p (Tim)你无法确定p是一个函数还是一个类实例,所以,在Python中,函数也是对象,对象和函数的区别并不显著。

  

任务   

改进一下前面定义的斐波那契数列:

        类Fib(对象):   & # 63;& # 63;& # 63;      

请加一个__call__方法,让调用更简单:

        在在在f=Fib ()   在在在printf (10)   [0,1,1,2,3,5,8,13日,21日,34)      

可以把实例对象用类似函数的形式表示,进一步模糊了函数和对象之间的概念

        类Fib(对象):   def __init__(自我):   通过   def __call__(自我,num):   a、b=0, 1;   self.l=[]      因为我在范围(num):   self.l.append (a)   a, b=b, a + b   返回self.l   def __str__(自我):   返回str (self.l)   __rept__=__str__      f=Fib ()   printf (10)      

以上这篇对python特殊函数__call__()的使用详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

对python特殊函数__call__()的使用详解