python __call__ 內置函數的使用

對象經過提供__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

相關文章
相關標籤/搜索