1
resposta

[Projeto] Hora da prática: instância de uma classe

class Veiculo:
    def __init__(self, marca, modelo):
        self.marca = marca
        self.modelo = modelo
        self._ligado = False
    
    def __str__(self):
        status = 'ligado' if self._ligado else 'Desligado'
        return f'O veiculo {self.marca} do modelo {self.modelo} está {status}'

from veiculo import Veiculo

class Carro(Veiculo):
    def __init__(self, marca, modelo, portas):
        super().__init__(marca, modelo)
        self.portas = portas


    def __str__(self):
        return f'{super().__str__()} Portas: {self.portas}'
from veiculo import Veiculo

class Moto(Veiculo):
    def __init__(self, marca, modelo, tipo):
        super().__init__(marca, modelo)
        self.tipo = tipo
    
    def __str__(self):
        return f'{super().__str__()} Tipo: {self.tipo}'
from carro import Carro
from moto import Moto



moto_xj6 = Moto('Yamaha', 'XJ6', 'Esportiva')
carro_911 = Carro('Porsche', '911 Carrera S', 2)

def mensagem():
    print(moto_xj6)
    print(carro_911)

mensagem()
1 resposta

E aí, Ângelo! 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!