Consegui resolver o exercício mas tenho uma duvida em relação ao trecho "from ______" da importação.
Eu tenho os arquivos na seguinte hierarquia de pastas: exercicio/main.py exercicio/classes/veiculo.py exercicio/classes/carro.py exercicio/classes/moto.py
Durante a resolução do exercício, na main.py usei "from classes.veiculo import Veiculo" (na verdade fiz isso com Carro e Moto, usei o exemplo só pra não ter que repetir), enquanto em Carro e Veiculo usei "from veiculo import Veiculo".
A depuração funcionava em carro.py e moto.py, mas não na main.
Quando adicionei em todos os 3 "from classes.veiculo import Veiculo" passou a funcionar. Mas quando ia na classe carro.py e moto.py não depurava corretamente.
Também tentei "from exercicio.classes.veiculo import Veiculo" e nada.
Alguém pode me explicar um pouco sobre?
main.py
from classes.carro import Carro
from classes.moto import Moto
def main():
carros = []
carro1 = Carro('Peugeot','206', 4)
carro2 = Carro('Volkswagen', 'Polo', 4)
carro3 = Carro('Hyundai', 'Veloster', 3)
Carro.listar_carros()
moto1 = Moto('Yamaha','Teneré', 'esportiva')
moto2 = Moto('Royal Enfield', 'Hunter 350', 'casual')
moto3 = Moto('Honda', 'PCX', 'casual')
Moto.listar_motos()
if __name__ == '__main__':
main()
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 'desligadoss'
return f'{self._marca} {self._modelo} está {self._ligado}'
def get_marca(self):
return self._marca
def get_modelo(self):
return self._modelo
def get_status(self):
return self._ligado
carro.py
from classes.veiculo import Veiculo
class Carro(Veiculo):
carros = [] #vai adicionar as instâncias na lista
def __init__(self, marca, modelo, qt_portas):
super().__init__(marca, modelo)
self._qt_portas = qt_portas
Carro.carros.append(self)
def __str__(self):
status = 'ligado' if self.get_status() else 'desligado'
return f'{self.get_marca()} {self.get_modelo()} {self.get_qt_portas()} portas está {status}'
def get_qt_portas(self):
return self._qt_portas
@classmethod
def listar_carros(cls):
for carro in Carro.carros:
print(carro)
moto.py
from classes.veiculo import Veiculo
class Moto(Veiculo):
motos = []
def __init__(self, marca, modelo, tipo):
super().__init__(marca, modelo)
self._tipo = tipo
Moto.motos.append(self)
def __str__(self):
status = 'ligado' if self.get_status() else 'desligado'
return f'{self.get_marca()} {self.get_modelo()}, tipo {self._tipo} está {status}'
def get_tipo(self):
return self._tipo
@classmethod
def listar_motos(self):
for moto in Moto.motos:
print(moto)