http://code.google.com/p/python-hidden-markov/source/browse/trunk/Markov.py
Contains a class HMM
, which inherits from BayesianModel
, which is a new-style class. Each has a __call__
method. HMM
's __call__
method is meant to invoke BayesianModel's at line 227:
return super(HMM,self)(PriorProbs)
However, this fails with an exception
super(HMM,self)
is not callable.
What am I doing wrong?
You need to invoke the __call__
method itself, explicitly:
return super(HMM, self).__call__(PriorProbs)
This applies to any hook that needs to call the overridden method on the superclass.
super()
returns a proxy object, with a .__getattribute__()
method that searches the super-class hierarchy for the attribute you are searching for. This proxy itself is not callable; it has no __call__
method of it's own. Only when you explicitly look up the __call__
method as an attribute of that proxy can python find the right implementation for you.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With