天天看點

python的__call__方法_python中__call__ 方法的使用介紹(附示例)

本篇文章給大家帶來的内容是關于python中__call__ 方法的使用介紹(附示例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

如果python中的一個類定義了 __call__ 方法,那麼這個類它的執行個體就可以作為函數調用,也就是實作了 () 運算符,即可調用對象協定

下面是一個簡單的例子:class TmpTest:

def __init__(self, x, y):

self.x = x

self.y = y

def __call__(self, x, y):

self.x, self.y = x, y

a = TmpTest(1, 2)

a(4, 5)

print(a.x, a.y)

在本文中不讨論裝飾部分的内容,借用裝飾器來講解一個__call__方法的使用,如果需要将一個類作為裝飾器,那需要為這個類實作__call__方法,一個使用__call__來實作類裝飾器的例子:class TmpTest:

def __init__(self, func):

self.func=func

def __call__(self, *args,**kwargs):

result=self.func(*args,**kwargs)

return result

@TmpTest

def add_num(x,y):

return x+y

print(add_num(1,0))