1
resposta

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

# Crie uma Classe Pai (Veiculo): Implemente uma classe chamada Veiculo com um construtor que aceita dois parâmetros, marca e modelo. A 
# classe deve ter um atributo protegido _ligado inicializado como False por padrão.

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

#Construa o Método Especial __str__: Adicione um método especial __str__ à classe Veiculo que retorna uma mensagem formatada com a marca, #modelo e o estado de ligado/desligado do veículo.

    def __str__(self):
        status = "ligado" if self._ligado else "desligado"
        return f"{self.marca} {self.modelo} - Status: {status}"
        
#Crie uma Classe Filha (Carro): Agora, crie uma classe chamada Carro que herda da classe Veiculo. No construtor da classe Carro, inclua um novo #atributo chamado portas que indica a quantidade de portas do carro.

from veiculo import Veiculo

class Carro(Veiculo):
    def __init__(self, marca, modelo, portas):
        super().__init__(marca,modelo)
        self._portas = portas
        
#Implemente o Método Especial str na Classe Filha: Adicione um método especial str à classe Carro que estenda o método da classe pai (Veiculo) e #inclua a informação sobre a quantidade de portas do carro.

    def __str__(self):
      return f"{super().__str__()} - Portas: {self._portas}"
    
#Crie uma Classe Filha (Moto): Similarmente, crie uma classe chamada Moto que também herda de Veiculo. Adicione um novo atributo chamado tipo ao #construtor, indicando se a moto é esportiva ou casual.

class Moto(Veiculo):
    def __init__(self, marca, modelo, tipo):
        super().__init__(marca, modelo)
        self._tipo = tipo
        
#Implemente o Método Especial str na Classe Filha (Moto): Adicione um método especial str à classe Moto que estenda o método da classe pai (Veiculo) #e inclua a informação sobre o tipo da moto.

def __str__(self):
     return f"{super().__str__()} - Portas: {self._tipo}"
     
#Crie um Arquivo Main (main.py): Crie um arquivo chamado main.py no mesmo diretório que suas classes.

#Importe e Instancie Objetos: No arquivo main.py, importe as classes Carro e Moto. Em seguida, crie três instâncias de Carro e Moto com diferentes #marcas, modelos, quantidade de portas e tipos.

from carros import Carro
from motos import Moto

carro1 = Carro("Toyota", "Corolla", 4)
carro2 = Carro("Honda", "Civic", 2)
carro3 = Carro("Ford", "Fusion", 4)

moto1 = Moto("Harley-Davidson", "Street 750", "Esportiva")
moto2 = Moto("Honda", "CB 500", "Casual")
moto3 = Moto("Yamaha", "MT-09", "Esportiva")

#Exiba as Informações: Para cada instância, imprima no console as informações utilizando o método str.

print(carro1)
print(carro2)
print(carro3)

print(moto1)
print(moto2)
print(moto3)
1 resposta

Oi, Marcia! Como vai?

Gostei de como você estruturou a herança e aplicou o super().__init__ para reaproveitar o construtor da classe pai. Um ponto de atenção é no __str__ da classe Moto, onde aparece "Portas" em vez de algo ligado ao tipo, o que pode gerar confusão.

Parabéns por praticar.

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