<强> __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__()的使用详解