私はthreading.Threadとbdb.Bdbの両方を継承しています。 Threadはstart関数が呼び出すためのrun関数が必要で、私はBdb.run関数を使用する必要があります。私はself.runで実行できないので、Bdbの実行機能をどのように参照しますか?私はスーパーを試みたが、私は明らかにその権利を使用していない、私は得るTypeError:classobjではなく、型でなければならない。継承したクラス関数の参照
import sys
import os
import multiprocessing
import threading
import bdb
from bdb import Bdb
from threading import Thread
from el_tree_o import ElTreeO, _RUNNING, _PAUSED, _WAITING
from pysignal import Signal
class CommandExec(Thread, Bdb):
'''
Command Exec is an implementation of the Bdb python class with is a base
debugger. This will give the user the ability to pause scripts when needed
and see script progress through line numbers. Useful for command and
control scripts.
'''
def __init__(self, mainFile, skip=None):
Bdb.__init__(self,skip=skip)
Thread.__init__(self)
# need to define botframe to protect against an error
# generated in bdb.py when set_quit is called before
# self.botframe is defined
self.botframe = None
# self.even is used to pause execution
self.event = threading.Event()
# used so I know when to start debugging
self.mainFile = mainFile
self.start_debug = 0
# used to run a file
self.statement = ""
def run(self):
self.event.clear()
self.set_step()
super(bdb.Bdb,self).run(self.statement)
'CommandExec'がスレッド*と*データベースであることは間違いありませんか?おそらくそれはデータベースを持っているかもしれませんか? – SingleNegationElimination
superを使用するには、その行を 'super(CommandExec、self).run(self.statement)'に変更します。 Python 3では、 'super()。run(self.statement)'です。あなたはBdbのスーパークラスではなく、CommandExecのスーパークラスを取得しています。 :) – Darthfett