Python中__call__用法实例

本文实例讲述了Python中__call__的用法,分享给大家供大家参考之用。具体方法如下:

先来看看如下示例代码:

?

1 2 3 4 5 6 7 8 9 10 #call.py 一个class被载入的情况下。 class Next :    List = []        def __init__( self ,low,high) :      for Num in range (low,high) :        self . List .append(Num * * 2 )        def __call__( self ,Nu):      return self . List [Nu]

如果 这样使用:

?

1 2 3 b = Next ( 1 , 7 ) print b. List print b( 2 )

那么回馈很正常:

?

1 2 [ 1 , 4 , 9 , 16 , 25 , 36 ] 9

但如果这样使用:

?

1 2 3 4 5 6 7 8 9 10 11 b = Next b( 1 , 7 ) print b. List print b( 2 ) $python . / call.py [ 1 , 4 , 9 , 16 , 25 , 36 ]   Traceback (most recent call last):   File "cal.py" , line 17 , in <module>    print b( 2 ) TypeError: __init__() takes exactly 3 arguments ( 2 given)

__init__是初始化函数,在生成类的实例时执行。

而__call__是模拟()的调用,需要在实例上应用,因此这个实例自然是已经执行过__init__了。

你所举的后面那个例子:

?

1 b = Next

这并不是创建实例,而是将class赋给一个变量。因此后面使用b进行的操作都是对Next类的操作,那么其实就是:

?

1 2 3 Next ( 1 , 7 ) print Next . List print Next ( 2 )
    原文作者:2puT
    原文地址: https://blog.csdn.net/Lina_ACM/article/details/54314253
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞