Boa noite, envio minha resolução. Feedbacks e dicas de boas práticas são bem-vindos.
veiculo.py
from abc import ABC, abstractmethod
class Veiculo(ABC):
veiculos = []
def __init__(self, marca, modelo):
self._marca = marca
self._modelo = modelo
self._ligado = False
self.veiculos.append(self)
@classmethod
def listar_veiculos(cls):
if not cls.veiculos:
mensagem = 'Não há carros disponíveis'
else:
mensagem = f'{'Lista de Veículos'.center(90,'_')}\n'
for i in cls.veiculos:
mensagem += f'Marca: {i._marca.ljust(25)} | Modelo: {i._modelo.ljust(25)} | Status: {'Ligado' if i._ligado else 'Desligado'}\n' #depois testar com if i._ligado else 'desligado'
print(mensagem)
@abstractmethod
def ligar(self):
self._ligado = True
carro.py
from veiculo import Veiculo
class Carro(Veiculo):
def __init__(self, marca, modelo, cor):
super().__init__(marca, modelo)
self._cor = cor
def ligar(self):
super().ligar()
main.py
# Crie uma classe chamada Veiculo com um método abstrato chamado ligar.
# No mesmo arquivo, crie um construtor para a classe Veiculo que aceita os parâmetros marca e modelo.
# Crie uma nova classe chamada Carro que herda da classe Veiculo.
# No construtor da classe Carro, utilize o método super() para chamar o construtor da classe pai e atribua o atributo específico cor à classe filha.
# Em um arquivo chamado main.py, importe a classe Carro.
# No arquivo main.py, instancie três objetos da classe Carro com diferentes características, como marca, modelo e cor.
from carro import Carro
from veiculo import Veiculo
def main():
carro1 = Carro('Peugeot', '206', 'cinza')
carro2 = Carro('Volkswagen', 'Polo', 'prata')
carro3 = Carro('Mercedes Benz', 'C180', 'branca')
carro1.ligar()
Veiculo.listar_veiculos()
if __name__ == '__main__':
main()