我在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/