对象经过提供__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