Поскольку self: Inner_Tp
говорит о том, что ни один подтип Inner
не будет разрешен для создания экземпляра, если только он не является подтипом Inner_Tp
Перезапись self => Inner_Tp
в Inner1
просто повторяет ограничение, оно не удовлетворяет ему. Чтобы получить аналогичную идею, если у вас есть потомок абстрактного класса, если он не реализует абстрактный метод, вы должны снова написать, что он абстрактный. И вы не можете создать экземпляр. То же самое здесь, вы подтвердили, что Inner_Tp
требуется, вы не сделали Inner_Tp
доступным.
Пока Inner_Tp
является абстрактным типом, вы не сможете смешивать его, и поэтому вы не сможете писать new Inner1
. Возможно, вам следует ввести абстрактный метод, который создает Inners.