1
resposta

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

from cardapio.veiculo import Veiculo
from cardapio.carro import Carro
from cardapio.moto import Moto

def main():
    veiculo = Veiculo('Fiat', 'Uno', False)
    print(veiculo)
    veiculo.ligar()
    print(veiculo)

    fiat = Carro('Fiat', 'Uno', False, 4)
    print(fiat)
    
    kawasaki = Moto('Kawasaki', 'Ninja', False, True)
    print(kawasaki)
    kawasaki.set_esportiva()
    print(kawasaki)
    kawasaki.set_casual()
    print(kawasaki)
    

if __name__ == '__main__':
    main()
    
    from cardapio.veiculo import Veiculo

class Moto(Veiculo):
    def __init__(self, marca, modelo, ligado, esportiva):
        super().__init__(marca, modelo, ligado)
        self._esportiva = False
    
    def __str__(self) -> str:
        return f'{super().__str__()} - {"Esportiva" if self._esportiva else "Casual"}'

    def set_esportiva(self):
        self._esportiva = True
    
    def set_casual(self):
        self._esportiva = False
        
        
class Veiculo:

    def __init__(self, marca, modelo, ligado):
        self._marca = marca
        self._modelo = modelo
        self._ligado = False

    def ligar(self):
        self._ligado = True

    def desligar(self):
        self._ligado = False

    def __str__(self) -> str:
        return f'{self._marca} {self._modelo} - {"Ligado" if self._ligado else "Desligado"}'


from cardapio.veiculo import Veiculo

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

    def __str__(self) -> str:
        return f'{super().__str__()} - {self._portas} portas'
    
    
1 resposta

Oi, Paulo! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Seu código está bem organizado e mostra claramente o uso de herança com as classes Carro e Moto. Um ponto interessante é o uso de métodos para alterar o estado da moto entre esportiva e casual, facilitando a leitura e manutenção do código.

Uma dica interessante para o futuro é usar o método __repr__ além do __str__ para depuração, pois ele define como o objeto será exibido no console de forma mais técnica. Veja este exemplo:


class Pessoa:
    def __init__(self, nome):
        self.nome = nome

    def __repr__(self):
        return f'Pessoa(nome="{self.nome}")'

O método __repr__ retorna uma representacao mais completa e util para desenvolvedores.

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