Каждый объект, который я знаю в 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
Но почему?