是什么让python中的对象可以调用

时间:2016-01-22 06:52:52

标签: python

我正在尝试优化对象的性能并从此模式切换:

class match(object):
    def __init__(self, fn):
        self.matchfn = fn
    def __call__(self, val):
        return self.matchfn(val)

class match(object):
    def __init__(self, fn):
        self.__call__ = fn

特别重要的是,__call__在此对象上被称为数十万次。 从在shell中进行测试,它似乎工作得更快,但一旦与我的所有其余代码集成,它就无法工作。

由于一个不明原因,我的实例有一个__call__方法但不被视为可调用。

这是我用来尝试调试问题的pdb会话:

 844         def __call__(self, value):
 845             for match in self._matchers:
 846                 import pdb; pdb.set_trace()
 847  ->             if match(value):
 848                     return True
 849             return False

(Pdb++) print match.__call__
<function <lambda> at 0x1258b0a28>
(Pdb++) print match.__call__(value)
False
(Pdb++) print match(value)
*** TypeError: 'match' object is not callable

我能错过什么?

0 个答案:

没有答案