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 に答える