Если вы хотите знать, «что именно, суперкласс __init__
делает для меня», вы всегда можете изучить источники и посмотреть, например, ...:
self.__target = target
self.__name = str(name or _newname())
self.__args = args
self.__kwargs = kwargs
self.__daemonic = self._set_daemon()
self.__ident = None
self.__started = Event()
self.__stopped = False
self.__block = Condition(Lock())
self.__initialized = True
точный набор инициализируемых сверхсекретных переменных может, конечно, варьироваться от одной ревизии python к следующей, но, очевидно, всегда будет несколько таких переменных и / или других выполняемых вещей инициализации в базовом классе __init__
. Вам нужно знать только все детали для вашей собственной инструкции (вы должны «уважать» слои абстракции, на которых вы хотите программировать, но если вы мудрый и опытный разработчик, тем лучше вы поймете , что это за абстракция слои мудро прячутся, тем больше вы их уважаете; -).
В общем, правило должно быть для каждого __init__
всегда вызывать суперкласс, за исключением только очень специфических случаев (таких как "классы прозрачного смешивания"), и, если вы не знаете, что они, вы, скорее всего, не нужно , чтобы знать). Общее правило всегда гласит: «Инициализация суперкласса может или не может быть важной в этом конкретном выпуске, но это никогда не повредит и часто будет необходимо и / или полезно»! -)