Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

métodos especiais e atributos

todas as respostar das questoes de 1 a 6 estao aqui

ex09.py

from abc import ABC, abstractmethod

class Viculo(ABC):
    def __init__(self, marca, modelo):
        self._marca = marca 
        self._modelo = modelo

    @abstractmethod
    def ligar(self):
        pass

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

    def ligar(self):
        print(f'O carro {self._modelo} esta ligado.')

main09.py

from ex09 import Carro

carro1 = Carro(marca="Ford", modelo="Focus", cor="Preto")
carro2 = Carro(marca="Chevrolet", modelo="Cruze", cor="Prata")
carro3 = Carro(marca="Honda", modelo="Civic", cor="Vermelho")

print(f"Carro 1: {carro1.marca} {carro1.modelo}, Cor: {carro1.cor}")
print(f"Carro 2: {carro2.marca} {carro2.modelo}, Cor: {carro2.cor}")
print(f"Carro 3: {carro3.marca} {carro3.modelo}, Cor: {carro3.cor}")
1 resposta

Oi, Apollo! Tudo bem?

A sua atividade sobre métodos especiais e atributos mostra uma boa prática de Orientação a Objetos em Python, usando classe abstrata com ABC, método abstrato com @abstractmethod e herança na classe Carro.

A estrutura está bem encaminhada, mas há um ponto importante: na classe Viculo, os atributos foram criados como _marca e _modelo, e na classe Carro como _cor; no main09.py, você tenta acessar carro1.marca, carro1.modelo e carro1.cor, mas esses atributos públicos não foram definidos. Uma dica é criar métodos @property para permitir esse acesso de forma controlada, por exemplo def marca(self): return self._marca, repetindo a ideia para modelo e cor. Também vale revisar o nome da classe Viculo, pois provavelmente a intenção era escrever Veiculo, o que deixa o código mais claro.

Você chegou a executar o main09.py depois de criar a classe para verificar se apareceu algum erro de atributo?

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