我在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
但为什么?
答案 0 :(得分:41)
这很好用:
>>> class MyThread(threading.Thread):
... def __init__(self):
... super(MyThread, self).__init__()
我认为你的代码的错误是你将基础类而不是当前类传递给super
- 即你是打电话给super(threading.Thread, ...
,这是错的。很难说,因为你没有显示你的失败代码,但这是我从你正在使用的语言中推断出来的! - )