Para não repetir cada pergunta, deixei dentro as marcações #[x], onde x representa o número do exercício e o código abaixo a resolução. .
Todas as classes estão no mesmo diretório
veiculo.py
#[1] e [2]
class Veiculo:
def __init__(self, marca, modelo):
self._marca = marca
self._modelo = modelo
self._ligado = False
@property
def ligar(self):
return 'Ligado' if self._ligado else 'Desligado'
def __str__(self):
return f'{self._marca:<13}{self._modelo:<13}{self.ligar:<15}'
carro.py
#[3] e [4]
from veiculo import Veiculo
class Carro(Veiculo):
def __init__(self,marca, modelo,cor,portas ):
super().__init__(marca, modelo)
self._portas = portas
self._cor = cor
def __str__(self):
return f'{super().__str__()}{self._cor:<18}{self._portas} portas'
main.py
#[5] e #[6]
from carro import Carro
from moto import Moto
carro1 = Carro('Mercedez','G 550','Branco Gelo', 4)
carro2 = Carro('Toyota','Cross','Grafite', 4)
carro3 = Carro('Volkswagen','Amarok V6', 'Preto', 4)
def main():
print(f'{'MARCA':<13}{'MODELO':<13}{'STATUS':<15}{'COR':<18}{'CARACTERÍSTICA'}')
print('-'*60)
print(carro1)
print(carro2)
print(carro3)
if __name__ == '__main__':
main()