爲什麼我在創建threading.Thread
類時被迫使用threading.Thread.__init__(self)
或super(ClassName, self).__init__()
?爲什麼需要Thread .__ init __()在Class中?
例如:
class Threader(threading.Thread):
def __init__(self, _fp, _q):
threading.Thread.__init__(self)
self.path = _fp
self.queue = _q
def run(self):
# Do stuff
或
class Threader(threading.Thread):
def __init__(self, _fp, _q):
super(Threader, self).__init__()
self.path = _fp
self.queue = _q
def run(self):
# Do stuff
這兩種方法的工作,並做大致相同的事情。但是,如果我刪除了.__init__()
方法,我會收到堆棧:from thread.start(): thread.__init__() not called
。
不應該定義我自己的def __init__()
「替換」.__init__()
方法?
我讀過this其他SO帖子,並與我的想法一致,但得到相同的堆棧錯誤。
爲什麼要細化'Thread'類呢?爲什麼不實例化一個'Thread'並給它一個可調用委託? 'my_thread = threading.Thread(target = my_callable)' –
@jameslarge語法對於我們在GUI更新中所做的操作來說更加清晰。 –