Я борюсь со списками абстрактных классов и PEP 484. Я понимаю, почему при некоторых обстоятельствах нельзя разрешать апкасты, но в следующем сценарии я считаю это глупым и громоздким: * 1001 :
c : List[SuperClass] = [ SubClass(0) ] + [ SubClass(i) for i in range(10)]
Но допускает это
a : List[SuperClass] = [ SubClass(0) ]
b : List[SuperClass] = [ SubClass(i) for i in range(10)]
c : List[SuperClass] = a + b
Это похоже на ошибку вывода типа и добавляет много беспорядка в код, особенно при использовании этой очень распространенной идиомы работы со списками подклассов различных типов.
Есть ли более чистый синтаксис для этого или способ дать подсказки системе типов?