1
resposta

Minha solução

from abc import ABC,abstractmethod
class Veiculo(ABC):
    def __init__(self,marca,modelo):
        self.marca = marca
        self.modelo = modelo
        self._ligado = False

    @abstractmethod
    def ligar(self):
        pass


from teste_v.Veiculo import Veiculo
class Carro(Veiculo):
    def __init__(self,marca,modelo,quan_portas,combustivel):
        super().__init__(marca,modelo)
        self.quan_portas = quan_portas
        self.combutivel = combustivel

    @property
    def ligar(self):
        return 'Carro ligado' if self._ligado else 'Carro Desligado'
        
        
    from teste_v.Carro import Carro

carro = Carro('Toyota','Corolla',4,'Diesel')





def main():
    print(f'Carro da marca {carro.marca}, Modelo: {carro.modelo}, Combustivel: {carro.combutivel}, Portas: {carro.quan_portas} portas')
    print(carro.ligar)





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

Oi, Ryan! Como vai?

Você estruturou bem a hierarquia de classes usando abstração com ABC e construiu um bom exemplo de herança com Carro. Um ponto importante: a propriedade ligar deveria alterar o estado do carro, mas no seu código ela só retorna o status atual. Isso pode confundir, pois um método chamado ligar normalmente liga o veículo.

Uma dica interessante para o futuro é usar um método real para mudar o estado do carro, e não uma propriedade. Veja este exemplo:


def ligar(self):
    self._ligado = True

Esse método ativa o carro. Já a @property pode continuar apenas para consultar o estado. Assim você separa claramente ação de informação no código.

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