1
resposta

[Dúvida] Hora da prática: métodos especiais e atributos

veiculo.py

from abc import ABC, abstractmethod

class Veiculos(ABC):
    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} | Status: {'Ligado' if self._ligado else 'Desligado'}'

    @abstractmethod
    def ligar(self):
        self._ligado = True

carro.py

from modelos.veiculos import Veiculos

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

    def __str__(self):
        return f'{super().__str__()} | Cor: {self._cor}'

    def ligar(self):
        return super().ligar() 

main.py

from modelos.carro import Carro

carro_01 = Carro('VW','Jetta','Vermelho')
carro_01.ligar()
carro_02 = Carro('Nissan','Martch', 'Verde')
carro_03 = Carro('Honda', 'HRV', 'Grafite')
carro_03.ligar()
def main():
    print(carro_01)
    print(carro_02)
    print(carro_03)

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

Oi, William! Como vai?

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

Gostei bastante da forma como você estruturou a classe abstrata Veiculos e aplicou o polimorfismo com a sobrescrita do método __str__ na classe Carro. O uso do super() ficou bem organizado e mostra um bom entendimento de herança. Também chamou atenção o controle de estado com o atributo _ligado, que deixa o comportamento do objeto mais realista.

Você pode usar o método especial __repr__ pra representar melhor seus objetos durante debug.


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

    def __repr__(self):
        return f'Carro(marca={self.marca}, modelo={self.modelo})'

Esse código permite visualizar o objeto de forma mais técnica e clara quando você imprime listas ou depura o sistema.

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