1
resposta

[Sugestão] Hora da prática: instância de uma classe

veiculos.py

class Veiculos:
    def __init__(self,marca, modelo):
        self.marca = marca
        self.modelo = modelo
        self._ligado = False

    def __str__(self):
        return f'Marca: {self.marca} | Modelo: {self.modelo} | Estado: {'Ligado' if self._ligado else 'Desligado'}'

carro.py

from veiculos import Veiculos

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

    def __str__(self):
        return f'{super().__str__()} | Qtd. Portas: {self.portas}'

moto.py

from veiculos import Veiculos
class Moto(Veiculos):
    def __init__(self, marca, modelo, tipo):
        super().__init__(marca, modelo)
        self.tipo = tipo

    def __str__(self):
        return f' {super().__str__()} | Tipo da moto: {self.tipo}'    

main.py

from carro import Carro
from moto import Moto

carro_01 = Carro('VW','Fox', 5)
carro_02 = Carro('Nissan', 'Martch', 5)
carro_03 = Carro('Jeep','Compass', 5)

moto_01 = Moto('Honda', 'CB 600', 'Esportiva')
moto_02 = Moto('BMW', '1100', 'Esportiva')
moto_03 = Moto('Harley Davidson', '883', 'Casual')

def main():
    print(carro_01)
    print(carro_02)
    print(carro_03)
    print(moto_01)
    print(moto_02)
    print(moto_03)

if __name__ == '__main__':
    main()
1 resposta

Olá, William! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso de herança para organizar classes com Python, utilizou muito bem o super() para reaproveitar código e ainda compreendeu a importância do str para representar objetos de forma legível.

Continue postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Uma dica interessante para o futuro é implementar métodos adicionais que alterem o estado do veículo. Assim:

class Veiculos:
    def __init__(self, marca, modelo):
        self.marca = marca
        self.modelo = modelo
        self._ligado = False

    def ligar(self):
        self._ligado = True

    def desligar(self):
        self._ligado = False

    def __str__(self):
        return f'Marca: {self.marca} | Modelo: {self.modelo} | Estado: {"Ligado" if self._ligado else "Desligado"}'

Isso faz com que os objetos possam simular ações reais, como ligar e desligar, tornando o código mais dinâmico e próximo da realidade.

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!