调用父类的__call__方法

7

http://code.google.com/p/python-hidden-markov/source/browse/trunk/Markov.py

包含一个名为HMM的类,该类继承自新式类BayesianModel。每个类都有一个__call__方法。 HMM__call__方法是在第227行调用BayesianModel的方法。

return super(HMM,self)(PriorProbs)

但是,这会导致异常。

super(HMM,self)

函数不可调用。

我做错了什么?

1个回答

7
您需要显式地调用__call__方法本身:
return super(HMM, self).__call__(PriorProbs)

这适用于需要调用父类中被覆盖方法的任何钩子。 super() 返回一个代理对象,并带有一个 .__getattribute__() 方法,该方法在超类层次结构中搜索您正在查找的属性。这个代理本身不可调用;它没有自己的 __call__ 方法。只有当您明确地将 __call__ 方法作为该代理的属性查找时,Python 才能为您找到正确的实现。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接