Aparentemente não há erro, porém o terminal não está executando o comando. As pastas estão nos locais certos

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!
Aparentemente não há erro, porém o terminal não está executando o comando. As pastas estão nos locais certos

Olá amigo.
Preciso do seu código completo para que possa analisar.
Aguardo...
Olá amigo.
Após analisar seu código com base nas imagens fornecidas:
Aparentemente o problema está no arquivo app.py.
Você criou a função main(), mas não está chamando ela em nenhum lugar.
Ou seja, o Python executa o arquivo, define a função, mas como não há chamada, nada acontece no terminal.
No final do seu app.py, adicione:
if __name__ == "__main__":
main()
Ficaria assim:
# segundo criamos o módulo de importação
from modelos.restaurante import Restaurante
restaurante_praca = Restaurante('Praça', 'Gourmet')
restaurante_mexicano = Restaurante('Mexican Food', 'Mexicana')
restaurante_japones = Restaurante('Japa', 'Japonesa')
restaurante_mexicano.alternar_estado()
# primeiro criamos o código principal
def main():
Restaurante.listar_restaurantes()
if __name__ == "__main__":
main()
Quando você roda python app.py, o Python executa o arquivo.
if, ele apenas carrega as funções e classes.main() é realmente chamado e vai executar o método listar_restaurantes().Olá amigo,
Obrigado,
A função até estava, porém o main estava aom aspas simples:
if name == 'main':
main()
Agora esta executando, minha questão agora está nos símbolos, por não estão carregando.
class Restaurante:
restaurantes = []
# nome da classe por convenção sempre com a primeira letra maiuscula
def __init__(self, nome, categoria): #o self é a referência
self._nome = nome.title() #vai .alterar o nome para a primeira letra do nome para maiuscula
self._categoria = categoria.upper() #vai alterar todas as .letras para maiúscula
self._ativo = False #A boa prática é todos os atributos com underline ( nome, categoria, ativo)
Restaurante.restaurantes.append(self)
def __str__(self):
return f'{self._nome} | {self._categoria}'
@classmethod #por convenção usamos o class method para trazer todos os atributos dessa classe
def listar_restaurantes(cls):
print(f'{'Nome do restaurante'.ljust(25)} |{'categoria'.ljust(25)} | {'Status'}')
for restaurante in cls.restaurantes:
print(f'{restaurante._nome.ljust(25)} | {restaurante._categoria.ljust(25)} | {restaurante._ativo}')
@property #decorator serve para mostrar algum atributo de forma diferente, nesse caso estamos decorando o ativo
def ativo(self):
return '☒' if self._ativo else '☐'
def alternar_estado(self):
self._ativo = not self._ativo
Aqui amigo mais uma vez...
Vamos tentar resolver o problema.
O método ativo, que retorna o símbolo "☒" ou "☐", nunca é chamado, e pode haver erros de estrutura.
Vamos corrigir e reestruturar a classe completa.
Aqui está a versão correta da classe Restaurante:
class Restaurante:
restaurantes = []
def __init__(self, nome, categoria):
self._nome = nome.title()
self._categoria = categoria.upper()
self._ativo = False
Restaurante.restaurantes.append(self)
def __str__(self):
return f'{self._nome} | {self._categoria}'
@classmethod
def listar_restaurantes(cls):
print(f'{"Nome do restaurante".ljust(25)} | {"Categoria".ljust(25)} | Status')
for restaurante in cls.restaurantes:
print(f'{restaurante._nome.ljust(25)} | {restaurante._categoria.ljust(25)} | {restaurante.ativo}')
@property
def ativo(self):
return '☒' if self._ativo else '☐'
def alternar_estado(self):
self._ativo = not self._ativo
listar_restaurantes:print(f'{'Nome...)`, as aspas estavam mal formatadas. Corrigi para que o cabeçalho apareça corretamente.listar_restaurantes, você usava restaurante._ativo diretamente:True ou False. Para mostrar os símbolos "☒"/"☐", você deve acessar a property ativo, ou seja, restaurante.ativo.main.py):from restaurante import Restaurante # se a classe estiver em outro arquivo chamado restaurante.py
rest1 = Restaurante('pizzaria da mama', 'italiana')
rest2 = Restaurante('Sushi House', 'japonesa')
rest2.alternar_estado() # ativa o restaurante
Restaurante.listar_restaurantes()
Nome do restaurante | Categoria | Status
Pizzaria Da Mama | ITALIANA | ☐
Sushi House | JAPONESA | ☒
Reforço que para uma analise correta preciso do código completo.
Todos os arquivos .py que compõe seu app.
Mas testa com estas mudanças e me envia o resultado.
Bons estudos.
E se tiver mais alguma duvida não deixe de perguntar.
Obrigado.