Вот этот код зацикливается. Пока писал этот пост понял почему. Подозреваю это из-за того что в в конструктор Abstract передаётся self от инстанса Concrete где __class__ равен самому внешнему классу.
Получается что вызывать super(self.__class__, self).__init__() небезопасно?
import threading
class Abstract(threading.Thread):
def __init__(self):
print("Abstract")
super(self.__class__, self).__init__()
class Concrete(Abstract):
def __init__(self):
print("Concrete")
super(self.__class__, self).__init__()
#here all okay
Abstract()
#fail :(
Concrete()