1. 程式人生 > >python中__call__()方法的用法

python中__call__()方法的用法

new print too pytho led pri 用法 函數的調用 object

__call__()的用法

  __call__()方法能夠讓類的實例對象,像函數一樣被調用;

技術分享圖片 技術分享圖片
>>> 
>>> class A(object):
    def __call__(self, x):
        print(‘__call__ called, print x: ‘, x)

        
>>> 
>>> a = A()
>>> a(‘123‘)
__call__ called, print x:  123
>>> 
技術分享圖片 技術分享圖片

  看a(‘123‘)這是函數的調用方法,這裏a實際上是類對象A的實例對象,實例對象能想函數一樣傳參並被調用,就是__call__()方法的功能;

接下來用一段簡單的代碼,來總體感受一下三個方法的用法和區別:

技術分享圖片 技術分享圖片
>>> 
>>> class A(object):
    def __init__(self, x):
        print (‘x in __init__‘, x)
    def __new__(cls, y):
        print ‘y in __new__‘, y
        return super(A, cls).__new__(cls)
    def __call__(self, z):
        print( ‘z in __call__‘, z)

        
>>> 
>>> A(‘123‘)(‘abc‘)
y in __new__ 123
x in __init__ 123
z in __call__ abc
>>> 
技術分享圖片 技術分享圖片

  由執行結果可以看出,雖然__init__()方法定義在__new__()方法之前,但是結果中先展示了__new__()方法的執行結果;

python中__call__()方法的用法