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