1
resposta

08 Hora da prática: instância de uma classe

class Veiculo:
    def __init__(self, marca, modelo, ligado):
        self.marca = marca
        self.modelo = modelo
        self._ligado = False
    
    def __str__(self):
        status = "ligado" if self._ligado else "desligado"
        return f"{self.marca} {self.modelo} - Status: {status}"
from veiculo import Veiculo

class Carro(Veiculo):
    def __init__(self, marca, modelo, ligado, porta):
        super().__init__(marca, modelo, ligado)
        self.porta = porta
    
    def __str__(self):
        return f"{super().__str__()} - Porta: {self.porta}"
from veiculo import Veiculo

class Moto(Veiculo):
    def __init__(self, marca, modelo, ligado, tipo):
        super().__init__(marca, modelo, ligado)
        self.tipo = tipo


    def __str__(self):
        return f"{super().__str__()} - Tipo: {self.tipo}"
from carro import Carro
from moto import Moto

moto = Moto('Honda', 'Start', True, 'Casual')
carro = Carro('Renault', 'Sandero', True, 4)



print(moto)
print(carro)
1 resposta

E aí, Gabriel! Tudo bem?

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

Percebi que você praticou o uso de herança entre classes para especializar comportamentos, aplicou muito bem o super() para reaproveitar o construtor da superclasse e ainda entendeu a relevância de sobrescrever o método __str__ para personalizar a saída de cada tipo de veículo.

Uma sugestão para evoluir ainda mais é usar métodos específicos em cada subclasse com o objetivo de definir comportamentos únicos. Veja só:

class Moto(Veiculo):
    def empinar(self):
        return f'{self.marca} {self.modelo} está empinando!'

Resultado:

Yamaha XJ6 está empinando!

Essa abordagem ajuda a tornar cada classe mais rica e orientada ao comportamento que representa.

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!