2
respostas

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

1-

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

2-

class Veiculo:
    def __init__(self,marca,modelo)
        self.marca = marca
        self.modelo = modelo
        self._ligado = False
    
    def __str__(self):
        status = "ligado" if self._ligado else "desligado"
        return f"{self.marca} {self.moldelo} - Status: {status}"

3-

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

4-

def __str__(self):
    status = "ligado" if self._ligado else "desligado"
    return f"{self.marca} {self.modelo} - Portas: {self.portas} - Status: {status}"

5-

class Moto(Veiculo):
    def __init__(self,marca,modelo,tipo):
        super().__init__(marca,modelo)
        self.tipo = tipo

6-

def __str__(self):
    status = "ligado" if self._ligado else "desligado"
    return f"{self.marca} {self.modelo} - Tipo: {self.tipo} - Status: {status}"

7 e 8-

#main.py
from carro import Carro
from moto 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")

9-

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

print(moto1)
print(moto2)
print(moto3)
2 respostas

Oi Felipe,

Percebi que você está com dificuldades na implementação da herança e na criação de instâncias das classes Veiculo, Carro e Moto. 👋

No código que você compartilhou, há alguns pontos que precisam de atenção:

  1. Erro de digitação: Na classe Veiculo, dentro do método __init__, você escreveu self.moldelo em vez de self.modelo. Isso causará um erro ao tentar acessar o atributo posteriormente. 👉
  2. Método __str__: O método __str__ nas classes Carro e Moto também usam self.moldelo em vez de self.modelo. Além disso, o método __str__ na classe Veiculo não está definido corretamente. Ele deve estar dentro da classe Veiculo e não fora. 🙄
  3. Herança: A classe Carro herda de veiculo (com "v" minúsculo), mas a classe correta é Veiculo (com "V" maiúsculo). O mesmo problema ocorre na classe Moto. 🧐
  4. Importação: No arquivo main.py, você está importando Carro de carros e Moto de motos. É importante verificar se os nomes dos arquivos correspondem aos nomes dos módulos que você está importando. 📋

Aqui está o código corrigido:

# veiculo.py
class Veiculo:
    def __init__(self, marca, modelo):
        self.marca = marca
        self.modelo = modelo
        self._ligado = False

    def __str__(self):
        status = "ligado" if self._ligado else "desligado"
        return f"{self.marca} {self.modelo} - Status: {status}"

# carro.py
from veiculo import Veiculo

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

    def __str__(self):
        status = "ligado" if self._ligado else "desligado"
        return f"{self.marca} {self.modelo} - Portas: {self.portas} - Status: {status}"

# moto.py
from veiculo import Veiculo

class Moto(Veiculo):
    def __init__(self, marca, modelo, tipo):
        super().__init__(marca, modelo)
        self.tipo = tipo

    def __str__(self):
        status = "ligado" if self._ligado else "desligado"
        return f"{self.marca} {self.modelo} - Tipo: {self.tipo} - Status: {status}"

# main.py
from carro import Carro
from moto 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")

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

print(moto1)
print(moto2)
print(moto3)

Para saber mais: Documentação oficial do Python sobre herança. Este link leva à documentação oficial do Python, onde você pode encontrar informações detalhadas sobre herança em Python.

Continue praticando e explorando os conceitos de orientação a objetos!

quanto ao método "fora" da classe, eu apenas separei pelo exercício, isso é mais para minha organização para eu não me perder muito. E agradeço a correção, estarei corrigindo.