Python中__call__用法实例
本文实例讲述了Python中__call__的用法,分享给大家供大家参考之用。具体方法如下:
先来看看如下示例代码:
#call.py一个class被载入的情况下。 classNext: List=[] def__init__(self,low,high): forNuminrange(low,high): self.List.append(Num**2) def__call__(self,Nu): returnself.List[Nu]
如果这样使用:
b=Next(1,7) printb.List printb(2)
那么回馈很正常:
[1,4,9,16,25,36] 9
但如果这样使用:
b=Next b(1,7) printb.List printb(2) $python./call.py [1,4,9,16,25,36] Traceback(mostrecentcalllast): File"cal.py",line17,in<module> printb(2) TypeError:__init__()takesexactly3arguments(2given)
__init__是初始化函数,在生成类的实例时执行。
而__call__是模拟()的调用,需要在实例上应用,因此这个实例自然是已经执行过__init__了。
你所举的后面那个例子:
b=Next
这并不是创建实例,而是将class赋给一个变量。因此后面使用b进行的操作都是对Next类的操作,那么其实就是:
Next(1,7) printNext.List printNext(2)
希望本文所述对大家的Python程序设计有所帮助。