1
resposta

[Projeto] Hora da prática: métodos especiais e atributos

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 __str__(self):
        return f'{self.marca} || {self.modelo} || {self.cor}'

    def ligar(self):
        print('Ligando o carro')


from veiculo import Carro

carro = Carro('Fiat','Uno','Prata')
carro1 = Carro('Ford','Ka','Preto')
carro2 = Carro('Chevrolet','Onix','Branco')



1 resposta

E aí, Paulo! Tudo bem?

Parabéns! Mantenha o ritmo nos exercícios e continue compartilhando na nossa comunidade.

Percebi que você praticou o uso de classes abstratas com ABC, aplicou muito bem o método @abstractmethod para garantir a implementação obrigatória em subclasses e ainda entendeu a relevância de herança e polimorfismo para estruturar sistemas flexíveis e reutilizáveis.

Uma sugestão para evoluir ainda mais é usar isinstance() com o objetivo de verificar o tipo de objeto antes de executar ações específicas. Veja só:

def ativar_veiculo(v):
    if isinstance(v, Veiculo):
        v.ligar()
    else:
        print("Objeto inválido")

ativar_veiculo(carro1)

Essa abordagem ajuda a garantir segurança na execução e pode ser muito útil para sistemas com múltiplos tipos de objetos.

Ícone de sugestão Para saber mais:

Sugestão de conteúdo para você mergulhar ainda mais sobre o tema:

Alguns materiais estão em inglês, mas é possível compreendê-los usando o recurso de tradução de páginas do próprio navegador.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!