6

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)

不可调用。

我究竟做错了什么?

4

1 回答 1

5

您需要__call__显式调用方法本身:

return super(HMM, self).__call__(PriorProbs)

这适用于任何需要调用超类上的重写方法的钩子。

super()返回一个代理对象,其.__getattribute__()方法在超类层次结构中搜索您正在搜索的属性。这个代理本身是不可调用的;它没有__call__自己的方法。只有当您将方法明确查找__call__为该代理的属性时,python 才能为您找到正确的实现。

于 2012-09-09T21:04:58.403 回答