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

python中的__call__方法

物件通過提供__call__(slef, [,*args [,**kwargs]])方法可以模擬函式的行為,如果一個物件x提供了該方法,就可以像函式一樣使用它,也就是說x(arg1, arg2...) 等同於呼叫x.__call__(self, arg1, arg2)。模擬函式的物件可以用於建立仿函式(functor) 或代理(proxy) class DistanceForm(object): 

   def __init__(self, origin):    

          self.origin = origin    

         print "origin :"+str(origin)  

  def __call__(self, x):       

         print "x :"+str(x)

p = DistanceForm(100) p(2000)

輸出: origin :100

             x :2000