我在Python中认识的每个对象都可以通过调用以下方法来处理其基类的初始化:

super(BaseClass, self).__init__()

子类threading.Thread似乎不是这种情况,因为如果我在SubClass.__init__()中尝试此操作,则会得到:
RuntimeError: thread.__init__() not called

是什么导致此错误?我查看了threading.Thread的源代码,看起来__init__方法应该设置Thread.__initialized = True。我看到所有示例都使用以下__init__:
class YourThread(threading.Thread):
    def __init__(self, *args):
        threading.Thread.__init__(self)
        # whatev else

但为什么?

最佳答案

这工作正常:

>>> class MyThread(threading.Thread):
...   def __init__(self):
...     super(MyThread, self).__init__()

我认为您的代码的错误在于,您将基类类而不是当前类的传递给super-即您正在调用super(threading.Thread, ...,这是错误的。很难说,因为您不会显示失败的代码,但这就是我从您所使用的语言中倾斜得出的结论!-)

关于python - 为什么super(Thread,self).__ init __()对于threading.Thread子类不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2197563/

10-12 16:46