super()
Quando você cria uma subclasse que adiciona novos atributos, geralmente precisa inicializar também os atributos da classe pai. Na prática, super().__init__() evita repetir código — basta passar os argumentos comuns para o construtor da classe base. Sem ele, você teria que definir manualmente self.marca e self.ano dentro de Carro, o que é frágil e redundante. Projetos reais usam super() para manter hierarquias limpas, como ao estender modelos Django ou componentes de interface gráfica.
O PROBLEMA
Veiculo(marca,ano) e Carro herdando usa super() para adicionar modelo.
EXEMPLO
Carro("Toyota",2022,"Corolla").modelo → CorollaSOBRE O CONCEITO
super() retorna um objeto temporário da superclasse, permitindo chamar seus métodos. No __init__, super().__init__(marca, ano) invoca o construtor de Veiculo para definir marca e ano. O erro comum é omitir essa chamada: se você escrever apenas self.modelo = modelo, os atributos da classe pai nunca são armazenados, gerando AttributeError ou comportamento incorreto. Como a herança serve para reutilizar código, super() garante que a lógica de inicialização da classe base seja executada. Sem ela, você precisaria de atribuições duplicadas, violando o princípio DRY. O exercício proíbe loops, mas isso é irrelevante — o foco está no encadeamento correto dos construtores.
RESOLUÇÃO