對象經過提供__call__(slef, [,*args [,**kwargs]])方法能夠模擬函數的行爲,若是一個對象x提供了該方法,就能夠像函數同樣使用它,也就是說x(arg1, arg2...) 等同於調用x.__call__(self, arg1, arg2) 。 模擬函數的對象能夠用於建立防函數(functor) 或代理(proxy)函數
class DistanceForm(object):代理
def __init__(self, origin):orm
self.origin = origin對象
print "origin :"+str(origin)it
def __call__(self, x):class
print "x :"+str(x)object
p = DistanceForm(100)方法
p(2000)call
輸出
>>>
origin :100
x :2000