1
resposta

[Projeto] resolução das atividades

veiculos.py

from abc import ABC, abstractmethod
class Veiculo(ABC):

    def __init__(self,marca,modelo):
        self._marca = marca
        self._modelo = modelo

    @abstractmethod
    def ligar(self):
        pass
        

carro.py

from veiculo import Veiculo
class Carro(Veiculo):

    def __init__(self,marca,modelo,cor):
        super().__init__(marca, modelo)
        self._cor=cor


    def liga(self):
        print(f'O carro {self._modelo}  está ligado')

main.py

from carros import Carro

class CarroConcreto(Carro):
    def ligar(self):
        return "Ligado"

carro1 = CarroConcreto(marca="Ford", modelo="Focus", cor="Preto")
carro2 = CarroConcreto(marca="Chevrolet", modelo="Cruze", cor="Prata")
carro3 = CarroConcreto(marca="Honda", modelo="Civic", cor="Vermelho")

print(f"Carro 1: {carro1._marca} {carro1._modelo}, Cor: {carro1._cor}, Ligar: {carro1.ligar()}")
print(f"Carro 2: {carro2._marca} {carro2._modelo}, Cor: {carro2._cor}, Ligar: {carro2.ligar()}")
print(f"Carro 3: {carro3._marca} {carro3._modelo}, Cor: {carro3._cor}, Ligar: {carro3.ligar()}")
1 resposta

Ei! Tudo bem, Cauã?

Parabéns por praticar conceitos tão avançados! O seu código está bem estruturado e de fácil leitura.

Deixo aqui alguns ajustes de sintaxe que percebi:

Em carro.py, você declarou:

def liga(self):

Mas o método abstrato da classe mãe se chama:

def ligar(self):

O nome precisa ser exatamente igual, senão o polimorfismo não funciona corretamente.

Continue se dedicando, você está indo muito bem e qualquer dúvida, compartilhe no fórum.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado