1
resposta

Verificar o código se está correto a montagem

class Veiculo: def init(self, marca, modelo): self.marca = marca self.modelo = modelo self._ligado = False

def __str__(self):
    return self._nome

def str(self): status = "ligado" if self._ligado else "desligado" return f"{self.marca} {self.modelo} - Status: {status}"

class Carro(Veiculo): def init(self, marca, modelo, portas): super().init(marca, modelo) self.portas = portas def str(self): status = "ligado" if self._ligado else "desligado" return f"{self.marca} {self.modelo} - Portas: {self.portas} - Status: {status}"

class Moto(Veiculo): def init(self, marca, modelo, tipo): super().init(marca, modelo) self.tipo = tipo def str(self): status = "ligado" if self._ligado else "desligado" return f"{self.marca} {self.modelo} - Tipo: {self.tipo} - Status: {status}"

from carros import Carro from motos import Moto

carro1 = Carro("Toyota", "Corolla", 4) carro2 = Carro("Honda", "Civic", 2) carro3 = Carro("Ford", "Fusion", 4)

moto1 = Moto("Harley-Davidson", "Street 750", "Esportiva") moto2 = Moto("Honda", "CB 500", "Casual") moto3 = Moto("Yamaha", "MT-09", "Esportiva")

print(carro1) print(carro2) print(carro3)

print(moto1) print(moto2) print(moto3)

1 resposta

Olá, Jeanderson! Tudo bem?

Vamos dar uma olhada no seu código e ver o que pode ser ajustado. Notei alguns pontos que podem ser melhorados para que o código funcione corretamente.

Classe Veiculo

  • No método especial __str__, você está retornando self._nome, mas esse atributo não foi definido. O correto seria retornar uma string formatada com self.marca e self.modelo.

Classe Carro e Moto

  • Os métodos __str__ das classes Carro e Moto estão fora da indentação correta. Eles devem estar dentro das respectivas classes.

  • Além disso, você pode utilizar o método super().__str__() para reutilizar a lógica da classe pai e adicionar as informações específicas das classes filhas.

Importação

  • No final do código, você está importando Carro e Moto de módulos carros e motos, mas esses módulos não foram fornecidos. Vamos assumir que as classes estão no mesmo arquivo para simplificar.

Aqui está o código ajustado:

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"{self.marca} {self.modelo} - Status: {status}"

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

    def __str__(self):
        status = "ligado" if self._ligado else "desligado"
        return f"{self.marca} {self.modelo} - Portas: {self.portas} - Status: {status}"

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

    def __str__(self):
        status = "ligado" if self._ligado else "desligado"
        return f"{self.marca} {self.modelo} - Tipo: {self.tipo} - Status: {status}"

# Criação das instâncias
carro1 = Carro("Toyota", "Corolla", 4)
carro2 = Carro("Honda", "Civic", 2)
carro3 = Carro("Ford", "Fusion", 4)

moto1 = Moto("Harley-Davidson", "Street 750", "Esportiva")
moto2 = Moto("Honda", "CB 500", "Casual")
moto3 = Moto("Yamaha", "MT-09", "Esportiva")

# Impressão das instâncias
print(carro1)
print(carro2)
print(carro3)

print(moto1)
print(moto2)
print(moto3)

Com essas correções, o código deve funcionar conforme esperado, exibindo as informações dos veículos corretamente.

Espero ter ajudado e bons estudos!

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