1
resposta

Pratica de método abstrato

from abc import ABC, abstractmethod

class Veiculo(ABC):
    def __init__(self, marca, modelo):
        self.marca = marca
        self.modelo = modelo
    def ligar():
        pass

class Carro(Veiculo):
    def __init__(self, marca, modelo, cor):
        super().__init__(marca, modelo)
        self.cor = cor
        
def ligar(self):
    print('O veiculo foi ligado')
    
from veiculo import Carro

carro1 = Carro('Nissan', '350z', 'Preto')
carro2 = Carro('Jeep', 'Renegade', 'Cinza')
carro3 = Carro('Hyundai', 'i30', 'Branco')

print(f'Carro 1 {carro1.marca} {carro1.modelo}, Cor: {carro1.cor}')
print(f'Carro 2 {carro2.marca} {carro2.modelo}, Cor: {carro2.cor}')
print(f'Carro 3 {carro3.marca} {carro3.modelo}, Cor: {carro3.cor}')
1 resposta

Oi, Cristofer! Tudo bem?

Ótima implementação das classes Veiculo e Carro, parabéns! Deixo apenas uma sugestão para definir como abstrato o método ligar na classe Veiculo: usar o decorador @abstractmethod da seguinte forma:

from abc import ABC, abstractmethod

class Veiculo(ABC):
    def __init__(self, marca, modelo):
        self.marca = marca
        self.modelo = modelo

    @abstractmethod
    def ligar(self):
        pass

class Carro(Veiculo):
    def __init__(self, marca, modelo, cor):
        super().__init__(marca, modelo)
        self.cor = cor
        
    def ligar(self):
        print('O veículo foi ligado')

Com essa alteração, o método ligar na classe Veiculo é agora um método abstrato, o que significa que qualquer classe que herde de Veiculo precisa implementar esse método. A classe Carro faz isso ao definir sua própria versão do método ligar.

Espero ter ajudado!

Um forte abraço e bons estudos!