Generator problem: parent class not seen
Peter Otten
__peter__ at web.de
Wed Feb 1 18:15:01 EST 2012
Russell E. Owen wrote:
> I have an odd and very intermittent problem in Python script.
> Occasionally it fails with this error:
>
> Traceback (most recent call last):
> File
> "/Applications/APO/TTUI.app/Contents/Resources/lib/python2.7/TUI/Base/Bas
> eFocusScript.py", line 884, in run
> File
> "/Applications/APO/TTUI.app/Contents/Resources/lib/python2.7/TUI/Base/Bas
> eFocusScript.py", line 1690, in initAll
> TypeError: unbound method initAll() must be called with BaseFocusScript
> instance as first argument (got ScriptClass instance instead)
> self=<ScriptClass object at 0x2066b410>; class hierarchy=[(<class
> 'TUI.Base.BaseFocusScript.ImagerFocusScript'>, (<class
> 'TUI.Base.BaseFocusScript.BaseFocusScript'>,)), [(<class 'ScriptClass'>,
> (<class 'TUI.Base.BaseFocusScript.ImagerFocusScript'>,))]]
>
> The code looks like this:
>
> def run(self, sr):
> try:
> self.initAll()
> ....
> except Exception:
> traceback.print_exc(file=sys.stderr)
> sys.stderr.write("self=%r; class hierarchy=%s\n" % (self,
> inspect.getclasstree([type(self)])))
> raise
>
> As a detail that may be important: the code is a generator that is being
> run by a script runner class (an instance of which is passed into the
> run function as argument sr). When the user starts a script the script
> runner calls the script's "run" generator. The script runner calls the
> run generator again later when conditions are right (e.g. data that is
> being waited for arrives, a time limit is reached...). In this case the
> failure occurs at the very start of the script, so a yield has not yet
> executed.
>
> I am puzzled why Python thinks the class type is wrong, given the output
> of inspect.getclasstree. Any ideas on what might be wrong and how to
> track it down (and why it would be so intermittent)?
Do you reload()?
More information about the Python-list
mailing list